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

Das bezeichnete Zeichenwirrwarr ist der binäre Quellcode der Grafik. Daher scheint es zu funktionieren. Nur die Klassifizierung als PNG scheint nicht zu klappen. Ich hoffe, dass „Content-Type“ in den beiden Fällen nicht identisch geschrieben ist, ist nicht die Ursache. Aber probier’s mal aus.
 
@ sturmrider
:D 8)
Joh, hab da ein komplettes, nicht einmal kostenloses CMS... extrem mies programmiert, und nicht ein bischen eingerückt der Code. echt brutal zu lesen und zu verstehen, da werd ich jedes mal sauer wenn ich im Code etwas suchen muss :D :D :D

Okay, wenn man es streng nimmt ist phpinfo(); sicherlich keine übliche Sicherheitslücke, ist natürlich klar^^ aber besser ist, man betrachtet ist (vielleicht für sich) als Lücke, seh ich jedenfalls so ;)


Okay, zurück zum eigentlichen Thema...^^

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);
?>
könnte eventuell deshalb nicht funktionieren, weil der header am anfang der datei ist, ich weiss nicht wieso, keine ahnung. aber bei mir hatte das auch nicht funktioniert. ich hab es so gemacht:

PHP:
<?php
$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);

// Hier header ausgeben und Bild erstellen...
header("Content-type:image/png");

//bild erstellen
imagepng($bild, '', 100);
imagedestroy($bild);
?>
Anmerkung: imagepng() hat bei mir noch zwei zusätzliche Parameter, ich habe aber keine Ahnung, wozu die sind. bei letzterem denke ich mal, dass es wohl die Qualität beschreiben soll. jedenfalls funktioniert das so bei mir einwandfrei... eventuell kannst du ja auch imagejpg() ausprobieren. Hab gelesen, dass bei GDlib < v.1.6 imagepng() nicht funktioniert.
 
kurze Anmerkung: mit gd_ info() kannst du auslesen welche Fkt. deine GDLib unterstützt :rolleyes:
-> eventuell ist "PNG Support" auf dem Server deaktiviert, warum auch immer (nur ne Idee)
 
Nein ändert auch nichts.

Allerdings erhalte ich einen Fatal error wenn in Zeile 22

imagepng($bild,'',100); es so habe und wenn ich es ändere in
imagepng($bild); dann komt halt wieder nur Zeichenwirrwar.

@Sturmrider

Das erhalte ich doch auch schon normal über phpinfo()?

Hier der GD Abschnitt
PHP:
gd
GD Support 	enabled
GD Version 	bundled (2.0.28 compatible)
FreeType Support 	enabled
FreeType Linkage 	with freetype
FreeType Version 	2.1.10
GIF Read Support 	enabled
GIF Create Support 	enabled
JPG Support 	enabled
PNG Support 	enabled
WBMP Support 	enabled
XPM Support 	enabled
XBM Support 	enabled
JIS-mapped Japanese Font Support 	enabled

Habe nun mal spaßeshalber (schreibt man das so?) PHP 5.2.1 installiert und erhalte nun eine Ausgabe mit lustigen Fragezeichen obwohl ich als default-charset in der php.ini utf-8 eingestellt habe. Bild ist angehängt

Gruß shady
 

Anhänge

  • ausgabe2.jpg
    ausgabe2.jpg
    32,1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Habe nun mal spaßeshalber (schreibt man das so?) PHP 5.2.1 installiert und erhalte nun eine Ausgabe mit lustigen Fragezeichen obwohl ich als default-charset in der php.ini utf-8 eingestellt habe.
Der Quellcode einer Grafik ist auch nicht zum Lesen gedacht.

Ich hab dein Quellcode jetzt mal selbst ausprobiert und musste feststellen, dass es funktioniert:
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( !headers_sent() ) {
		header("Content-type:image/png");
		imagepng($bild);
	}
	imagedestroy($bild);

?>
 
Ich sage ja auf dem einen Webspace Funktioniert es und auf dem anderen (Rootserver) nicht.

Ich habe wirklich keine idee warum nicht.

Und du bestätigst ja auch das es geht :)
 
Zurück