Hallo,
womöglich sehe ich den Wald vor lauter Bäumen nicht, aber ich bekomme es nicht hin, dass mir die erstellte Grafik angezeigt wird.
Ich hab das Script von einem Windows-Server auf einen Linux-Server übertragen. Auf dem Windows-Server läuft es einwandfrei.
Zum Hintergrund: Erstellt werden soll ein Captcha-Bild.
Zum Testen speichere ich das Bild ab. Das Bild wird auch korrekt erzeugt und gespeichert und ich kann es mir problemlos anzeigen lassen. Nur eben nicht im Browser. Die GD-Library ist also installiert und die Berechtigungen passen auch.
Ich habe darauf geachtet, dass keine Leerzeilen oder Kommentarzeilen enthalten sind und sogar versucht vorher alle womöglich vorhandenen header zu entfernen (siehe erste 4 Zeilen). Im Editor sieht die gespeicherte PNG-Datei auch OK aus (PNG-Header und keine PHP-codes).
Ich hoffe, dass Ihr noch einen Tipp oder gar die Lösung für mich habt.
LG Klaus
Hier das Script:
foreach (getallheaders() as $name => $value) {
header_remove($name);
}
ob_end_clean();
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
$characters = "ABCDEFGHJKLMNPRSTUVWXYZabcdefghjkmnprstuvwxyz23456789";
$length = 5;
$code = "";
while( strlen($code) < $length ) {
$code .= substr($characters, mt_rand() % (strlen($characters)), 1);
}
session_start();
$_SESSION["code"]=$code;
$bg_path = "../images/backgrounds/";
$backgrounds = array(
$bg_path . '45-degree-fabric.png',
$bg_path . 'cloth-alike.png',
$bg_path . 'grey-sandbag.png',
$bg_path . 'kinda-jean.png',
$bg_path . 'polyester-lite.png',
$bg_path . 'stitched-wool.png',
$bg_path . 'white-carbon.png',
$bg_path . 'white-wave.png');
$background = $backgrounds[mt_rand(0, count($backgrounds) -1)];
$angle = mt_rand( 0, 10 ) * (mt_rand(0, 1) == 1 ? -1 : 1);
$font_size = 34;
$font = "../font/times_new_yorker.ttf";
$img = imagecreatefrompng($background);
$color = imagecolorallocate($img, 255, 255, 255);
imagettftext($img, $font_size, $angle, 10, 50, $color, $font, $code);
imagepng($img,'../images/test1.png',0,NULL);
imagedestroy($img);