PHP script auf einem server läufts auf dem anderen nicht

MSshady

Mitglied
Folgendes script:

PHP:
<?php
header("Content-type:image/png");
$bild = imagecreatefrompng("d.png");
      $Datum = "14.04.2007 10:05:00";                                  // Schrift
            $Zieldatum = mktime(substr($Datum, 11, 2), substr($Datum, 14, 2), substr($Datum, 17, 2), substr($Datum, 3, 2), substr($Datum, 0, 2), substr($Datum, 6, 4), -1);
          $Differenz = $Zieldatum-time();
          $Tage = floor($Differenz/86400);
          $Rest = $Differenz-($Tage*86400);
          $Stunden = floor($Rest/3600);
          $Rest = $Rest-($Stunden*3600);
          $Minuten = floor($Rest/60);
          $Rest = $Rest-($Minuten*60);
          $Zeit = "T:$Tage - H:$Stunden - M:$Minuten - S:$Rest";
$blau = imagecolorresolve($bild, 47, 214, 250);
$hinter = imagecolorresolve($bild, 255, 255, 255);
imagecolortransparent($bild, $hinter);
imagestring($bild, 7, 5, 1, "$Zeit", $blau);
imagepng($bild);
imagedestroy($bild);
?>

Wie gesagt auf dem einen server läufts auf dem anderen nicht.
Wäre es ein Sicherheitsrisiko wenn ich einen Link zu den jeweiligen phpinfo Dateien poste?
 
Nein, nicht das ich wüsste. In der PHP-Info stehen nur Daten vom Server bzw. dessen Settings, aber nichts von dir. Ansonsten schau doch selber einem ob die GD-Lib aktiviert ist.
Ich glaube allerdings nicht, dass das das Problem ist ^^

Vielleicht ist das Bild nicht auf dem Server?
Was für eine Fehlermeldung bekommst du eigentlich?
->hoffentlich eine andere als ich beim Testen bekomme: "Die Grafik "http://localhost/test.php" kann nicht angezeigt werden, weil sie Fehler enthält." Allerdings wie lautet denn der Quellcode des Bildes? Warscheinlich steht dort die eigentliche PHP-Fehlermeldung drin ;)

Edit: Übrigens, was ich noch anmerken muss ^^ (sry, kanns mir nicht verkneifen) Du solltest in Zukunft etwas mehr Wert auf folgende Dinge in deinen Codes legen:
1. Variablennamen einheitlich schreiben (sollten nur klein sein)
2. !dich über die php-Zeit-Funktionen informieren!
3. Fehlerbehandlung in deinen Codes verwenden
 
Zuletzt bearbeitet:
@ msshady:
Ja, es ist ein sicherheitsrisiko. Die phpinfo();-Informationen sind nur für dich bestimmt, nicht für andere. Zu deinem Problem: Ich denke mal, dass auf dem einen Server PHP ohne Grafikbibliotheken laufen, auf dem anderen mit. aber, schau einfach mal in den Quelltext der Seite, auf dessen Server das Script nicht läuft. Da steht der Fehlergrund in der Regel drin, auch wenn dieser nicht sichtbar im Browserfenster ist.

@ Sturmrider:
Es bleibt jedem selbst überlassen, wie er coded. jeder hat da seinen eigenen Style, und das ist auch gut so. Deshalb solche Comments einfach für sich behalten ;)
 
Probier mal Folgendes und rufe das Skript direkt auf:
PHP:
<?php

	header('Content-Type: text/plain');

	$bild = imagecreatefrompng("d.png");
	$Datum = "14.04.2007 10:05:00";
	// Schrift
	$Zieldatum = mktime(substr($Datum, 11, 2), substr($Datum, 14, 2), substr($Datum, 17, 2), substr($Datum, 3, 2), substr($Datum, 0, 2), substr($Datum, 6, 4), -1);
	$Differenz = $Zieldatum-time();
	$Tage = floor($Differenz/86400);
	$Rest = $Differenz-($Tage*86400);
	$Stunden = floor($Rest/3600);
	$Rest = $Rest-($Stunden*3600);
	$Minuten = floor($Rest/60);
	$Rest = $Rest-($Minuten*60);
	$Zeit = "T:$Tage - H:$Stunden - M:$Minuten - S:$Rest";
	$blau = imagecolorresolve($bild, 47, 214, 250);
	$hinter = imagecolorresolve($bild, 255, 255, 255);
	imagecolortransparent($bild, $hinter);
	imagestring($bild, 7, 5, 1, "$Zeit", $blau);

	if( !header_sent() ) {
		header("Content-type:image/png");
		imagepng($bild);
	}
	imagedestroy($bild);

?>
 
@TchiboMann
oh, wusste ich nicht, dass die phpinfo()-Informationen für andere ein Sicherheitsrisiko darstellen. Warum? (habe mich erlichgesagt noch nicht so ausführlich mit ihr beschäftigt)
Übrigens habe ich das gleiche mit GD-Lib bereits gemeint ;)

Was die Sache mit meiner kleinen Anregung betrifft, die ist nicht böse, sondern gut gemeint ^^ ->wir wollen uns ja alle weiterentwickeln oder nicht ;) ?
Über 1. kann man natürlich streiten (was ich nicht vor habe ^^!)
kurze Begründung warum ich das dachte: man schreibt KlassenNamen ja normalerweise am Anfang groß, deswegen sollte man für die bessere Unterscheidung/Übersicht [finde ich] variablenNamen klein beginnen
 
@Gumbo nun erhalte ich folgende Fehlermeldung "Fatal error: Call to undefined function header_sent() in /public_html/countdown/d1.php on line 21"

GD ist installiert und auch enabled

@Sturmride hast schon recht, bissel was einheitlich sollte man schon haben :)
 
naja, die Informationen, die PHP ausspuckt, sind ja reichlich. Sprich, er gibt auch Module des Apache Webservers aus, und die Apache-Version, und ob PHP als CGI installiert ist usw. Das alles kann nem Hacker als angriffsziel dienen - denn all diese Programme können dokumentierte und nicht-dokumentierte Sicherheitslücken aufweisen, teilweise eventuell gravierende.

Ich sag immer: Gib so wenig wie nur irgend möglich an Informationen über deinen Server raus - dann erst bist du auf einer sichereren Seite (nicht der sichersten^^).

Naja, okay, mag sein dass man wegen der Übersicht variablen kleinSchreiben sollte. Aber - es liegt eben im Ermessen des Programmierers, was ihm besser passt. Von dahher sag ich da nich ein Ton dazu :D Steht mir nicht zu, darüber zu urteilen ;)

Was ich allerdings hasse, sind Coder, die ihren Code nicht einrücken, da werd ich sogar sauer :D aber alles andre soll mir eben egal sein =)

Achjo, das mit der GD-Lib ;) Da hatteste hinterhergeschossen, dass du das doch eher ausschliesst :D darum hab ich das nochmal erwähnt, nicht um dich zu ärgern :D :D
 
@Gumbo sorry, bin schon müde :)

kann das Zeichenwirrwar leider nicht kopieren darum hab ich ne jpg Datei angehangen
 

Anhänge

  • ausgabe.jpg
    ausgabe.jpg
    21 KB · Aufrufe: 27
*lacht* soetwas finde ich klasse :D
Wenn man sich mit Leuten gut und gesittet unterhalten kann! :rolleyes: @TchiboMann du bist mir sympathisch ;-) auch schon, da du eine Antipathie gegen nicht eingerückte Codes hegst *lol*

Noch ne kurze Anmerkung zur phpinfo(). Ich habe mich da eben mal informiert:
Streng genommen stellt sie kein Sicherheitsrisiko dar, allerdings praktisch schon. So können, wie du bereits geschrieben hast, gelegentlich mal Lücken drin gefunden werden, die es erleichtern verwundbare Systeme aufzufinden. Allerdings NICHT das Angreifen erleichtern ;) (grundsätzlich könnte ein Bot auch einfach jeden Host angreifen)

Problem bei der veröffentlichen der phpinfo() wäre z.B. man kann man mit geeigneten Anfragen bei google alle Hosts finden, die noch eine alte libgd verwenden ->wenn google eine phpinfo-Datei indexiert hat ^^

Sry, das gehört nicht ganz zum Thema, doch ich wollte das noch richtig stellen ;-)
 
Zurück