Text wird online mit imagettftext() nicht ausgegeben!

eiisa

Mitglied
Hallo Zusammen,

nachdem ich bereits unzählige Beiträge nach einer Lösung durchforstet habe und leider nichts funktioniert hat, hoffe ich dass mir jemand weiterhelfen kann.

Die PHP-Funktion imagettftext() funktioniert auf meinem lokalen Webserver wunderbar - ein Bild wird mit dem erwarteten Text zusammengefügt und ausgegeben.
Nur online sieht es anders aus - dort wird lediglich das nackte Image angezeigt.

Folgendes habe ich bereits überprüft:
- Die "T T F" Datei ist auf dem Server erreichbar (Test: file_exists($filename)).
- Absolute Pfadangabe zur Font-Datei hatte auch keine Auswirkung
- Error_Reporting hat mir keine Fehler geliefert
- direkter Aufruf der Datei mit "text/plain" header machte auch keinen Unterschied

Alles lieferte das selbe Ergebnis: Es wird lediglich das Image ohne Text ausgegeben.

Ich wäre euch wirklich sehr sehr dankbar, wenn ihr mir weiterhelfen könntet.

Gruß Isabelle
 
Hallo Tyg3er,

ich hab mir die Infos per phpinfo() geholt. Die GDlib sowie Freetype sind aktiviert.

Dies wäre dann mein Code dazu:
PHP:
<?php
   header('Content-type: image/png');
      
   session_start(); 
   unset($_SESSION['captcha_spam']); 

   function randomString($len) { 
      srand(date("s")); 
      $possible="ABCDEFGHJKLMNPRSTUVWXYZ23456789"; 
      $str=""; 
      while(strlen($str)<$len) { 
        $str.=substr($possible,(rand()%(strlen($possible))),1); 
      } 
   return($str); 
   } 

   $text = randomString(5);
   $_SESSION['captcha_spam'] = $text; 
          
   $img = ImageCreateFromPNG('captcha.PNG');  
   $color = ImageColorAllocate($img, 0, 0, 0);   
   $ttf = $_SERVER['DOCUMENT_ROOT']."/pages/guests/captcha/XFILESF";
   $ttfsize = 25; 
   $angle = rand(0,5); 
   $t_x = rand(5,30); 
   $t_y = 35; 

   imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text); 
   imagepng($img); 
   imagedestroy($img); 
?>
 
Hm sehr komisch.
Der Code sieht sehr sauber aus (auch keine Fehler entdeckt).
Und das Bild wird wie Du sagst ja auch ausgegeben.
Sieht mir schon sehr nach ner Serversache aus.

Versuche doch mal das Return von der Funktion zu printen (gibt ja nen Array aus):

print_r(imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text));
exit;

Mal sehen was die Ausgabe meint.
Ich schau noch eben nach, ob es eine Exception-Catch Möglichkeit für die Lib gibt.
 
Die Ausgabe sieht so aus:
HTML:
Array
(
    [0] => 7
    [1] => 35
    [2] => 91
    [3] => 34
    [4] => 90
    [5] => 15
    [6] => 7
    [7] => 16
)
 
Hm, dann arbeitet die Funktion "sogar" :)
kann ich mir fast nicht erklären.

Vielleicht bei Null anfangen, falls wir etwas übersehen.

Gib die Funktion doch mal mit fixen Parametern an:

$white = ImageColorAllocate ($img, 255, 255, 255);
ImageTTFText ($img, 20, 0, 10, 20, $white, $ttf, "Hallo Welt!");

Eine mögliche Fehlerquelle wäre noch der Pfad zur TTF Font Datei.
Die vielleicht mal mit die($ttf); ausgeben und prüfen.

/edit: fehler in ImageColorAllocate parametern
 
Zuletzt bearbeitet:
Die Ausgabe der Funktion mit fixen Parametern liefert lokal alles wie erwünscht, aber leider erneut nicht auf dem Webserver.
Den Pfad zu der Datei habe ich nochmals überprüft - passt aber auch alles.

Oh, ich seh schwarz. :-( Will aber noch nicht aufgeben. :)
 
Zurück