PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP als CGI Problem



Viktor
17-06-2005, 19:36
Hallo,

ich habe ein Problem mit einem Server wo PHP als CGI läuft.

Der Befehl im Template:

<img src="locator.php?action=image" border="0" alt="" usemap="#locator">

erzeugt eine Grafik die aber leider nicht angezeigt wird. :(

Das Programm "locator.php" ruft ein Template auf in dem der Code oben aufgerufen wird.

Das Problem ist nur bei dem Server. :(

Auf einem Server wo nicht PHP als CGI läuft klappt alles einwandfrei. :rolleyes:

Hat jemand eine Idee woran das liegen kann. :confused:

Danke
Viktor ;)

nEox
17-06-2005, 20:50
Halo Viktor,

bist du dir sicher das beim Aufruf des Scripts "locator.php?action=image" der korrekte Header mitgeschickt wird?

Z. B.:


header("HTTP/1.1 200 OK", true);
header("Date: ". gmdate("D, d M Y H:i:s GTM"), true);
header("Server: Apache/1.3.27", true);
header("Accept-Ranges: bytes", true);
header("Content-Type: image/jpeg", true);

//Bildausgabe
Ich frage das weil bei mir PHP als Modul läuft und das wunderbar mit dem Erzeugen dynamischer Bilder klappt. Kann mir also nicht vorstellen das es daran liegen könnte.

Ruf das "dynamische Bild", also "locator.php?action=image" doch mal direkt im Browser auf. Da solltest du sehen was wirklich ausgegeben wird.

Gruß nEox

Viktor
17-06-2005, 21:41
Hallo,

wenn ich den Link direkt Aufrufe also "locator.php?action=image" dann bekomme ich eine Fehlermeldung.


Die Grafik "http://..." kann nicht angzeigt werden, weil sie Fehler enthält.

In der PHP-Datei sieht es so aus:


case "image": $result_vg1 = $db_zugriff->query("SELECT userid, x, y FROM bb".$n."_wlw");

$insertfile_id = imageCreateFromPNG("locator/mark.png");
$sourcefile_id = imageCreateFromPNG("locator/locator.png");

$sourcefile_width=imageSX($sourcefile_id);
$sourcefile_height=imageSY($sourcefile_id);
$insertfile_width=imageSX($insertfile_id);
$insertfile_height=imageSY($insertfile_id);

while($row=$db_zugriff->fetch_array($result_vg1))
{
imageCopyMerge($sourcefile_id, $insertfile_id,$row['x'],$row['y'],0,0,$insertfile_width,$insertfile_height,100);
}
header("Content-type: image/png");
imagePNG($sourcefile_id);


Wenn ich das "header("Content-type: image/png");" weg lasse bekomme ich nur Müll angezeigt. :(

Gruß
Viktor ;)

nEox
19-06-2005, 10:54
Hallo Viktor,

erstma sorry das ich erst jetzt antworte.

Also ich hab dein Script mal bei mir ausporbiert. Funktioniert auch. Kannst du mal in der phpinfo nachschaun welche gd-Version zum Einsatz kommt und ob der PNG-Support aktiviert ist? Komisch das da kein Fehler auftritt...

PS: Hab dir mal das Script angehängt mit dem ich getestet hab

Gruß nEox

Viktor
19-06-2005, 15:42
Hallo nEox,

macht nicht Hauptasche das überhaupt einer Antwortet.

Das Script läuft auch auf allen Server nur bei dem Hoster nicht.

Das ist PHP als CGI drauf un jeder Webspace hat seine eigene PHP.INI.

GD ist 2.0.28 daruf. phpinfo (http://www.tango-forum.info/phpinfo.php)

Wir haben festgestellt das wenn wir die Grafik erstellung aus dem Programm raus nehem und in ein extra Programm machen dann klappt es.

Ich verstehe nur nicht was bei PHP als CGI anders ist.

Gruß
Viktor ;)

Gaert
19-06-2005, 20:24
Hallo Viktor,

hast du in deinem Skript irgendwo einen Zeilenumbruch ausserhalb deines PHP codes (vor <?php oder nach ?>), wenn ja korrumpiert sie die Grafik die du ausgibst. Ansonsten schau dir den "Müll", den das Skript ausgibt wenn du den header weglässt mal genau an, ob irgendwo eine Fehlemeldung steht.

Gruß,

Gaert