Bildgenerierung funktioniert lokal, aber nicht auf Server

SilentWarrior

Erfahrenes Mitglied
Hi there mal wieder :)

Ich bastel derzeit einen Release-Timer für ein Computerspiel. Dazu hab ich folgenden Code in der Datei countdown.php:
PHP:
<?php
$img = imagecreatefromjpeg('countdown.jpg');

/* Calculate days until release */
$release = mktime(0, 0, 0, 5, 26, 2006);
$now = time();
$diff = $release - $now;
$diffdays = ceil($diff/86400);

$brown = imagecolorallocate($img, 102, 102, 102);

imagettftext($img, 11, 0, 80, 20, $brown, 'legion.ttf', $diffdays);

header('Content-type: image/jpeg');
imagejpeg($img);
?>
(Die Dateien countdown.jpg und legion.ttf befinden sich im gleichen Verzeichnis.)

Das Problem ist: Lokal funktioniert das einwandfrei, das Bild wird genauso dargestellt, wie ich es haben möchte. Nur wenn ich es auf den Server lade, dann findet das hier statt:
Warning: imagettftext(): Could not read font in /is/htdocs/63802/www.hitman-3.de/countdown/countdown.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/63802/www.hitman-3.de/countdown/countdown.php:12) in /is/htdocs/63802/www.hitman-3.de/countdown/countdown.php on line 14
Was soll ich jetzt davon halten? Ich muss sagen, ich hab keinerlei Erfahrung mit der Bildgenerierung von PHP und hab mir die nötigen Befehle heute morgen schnell zusammengesucht. An den Zugriffsrechten für die TrueType-Datei kann es nicht liegen, die habe ich auf 777 gesetzt. Ich weiss überhaupt nicht, woran es liegen könnte bzw. wonach ich überhaupt suchen muss, um eine Lösung des Problems zu finden.

Ich hoffe, hier kann mir jemand helfen.

--
SilentWarrior
 
Hast du die genaue Schreibweise der Datei beachtet oder es schon mal mit der relativen Angabe „./legion..ttttf“ probiert?
 
Tag zusammen,
siehe imagettftext


In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.

PHP:
<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the f extension)
$font = 'SomeFont';
?>

Ich hoffe das hilft dir weiter.

Gruß
Marvin
 
Gumbo hat gesagt.:
Hast du die genaue Schreibweise der Datei beachtet oder es schon mal mit der relativen Angabe „./legionf“ probiert?
Was meinst du mit genauer Schreibweise? Ich hab auf Gross-/Kleinschreibung geachtet, weitere Fallstricke sind mir diesbezüglich nicht bekannt. Die Angabe ./legion.ttf hatte ich noch nicht ausprobiert, die funktioniert aber leider auch nicht.
Marvin Schmidt hat gesagt.:
PHP:
putenv('GDFONTPATH=' . realpath('.'));
Auch das habe ich probiert – leider ebenfalls erfolglos. :(
 
Hallo!

Wenn der Pfad zum Fontfile nicht stimmen würde, würde eine andere Meldung kommen:
Code:
Warning: imagettfbbox() [function.imagettfbbox]: Could not find/open font in.....
Bei "Could not read font" würde ich eher darauf tippen dass die Datei keine ausreichenden Zugriffsrechte besitzt.
Hast Du mal den CHMOD Wert höher gesetzt (im Zweifel erstmal mit 777 versuchen)?

Gruss Dr Dau
 
Autsch, sorry. :(

Anderer Vorschlag: Deine Fehlermeldung sagt zwar was anderes, aber hast Du mal geguckt was passiert wenn Du den Pfad zur Fontdatei bewusst falsch setzt?

[edit]
Ich habe mal ein wenig auf meinem Webspace (Debian) bei meinem ISP rumprobiert.
Wenn ich das Fontfile absichtlich im ASCII-Modus übertrage, dann bekomme ich die gleiche Meldung (Could not read font in.....).
Im Auto-Modus wurde das Fontfile im ASCII-Modus übertragen, obwohl *.ttf nicht in der Filterliste für ASCII-Dateien steht.
Wenn ich das Fontfile im Binary-Modus hochlade funktioniert es wunderbar..... allerdings nur nach dem ich den Pfad zum Fontfile mit "./datei.ttf" angepasst habe (sonst ist "Could not find/open font in....." gekommen).
Beim Bild brauchte ich den Pfad nicht anpassen. :suspekt:
[/edit]
 
Zuletzt bearbeitet:
Dr Dau hat gesagt.:
Anderer Vorschlag: Deine Fehlermeldung sagt zwar was anderes, aber hast Du mal geguckt was passiert wenn Du den Pfad zur Fontdatei bewusst falsch setzt?
Ja, dann ändert sich die Fehlermeldung in »could not find/open font« – die Pfadangabe als solches scheint also zu stimmen, es muss irgendein Problem mit der Datei sein.
Dr Dau hat gesagt.:
[edit]
Ich habe mal ein wenig auf meinem Webspace (Debian) bei meinem ISP rumprobiert.
Wenn ich das Fontfile absichtlich im ASCII-Modus übertrage, dann bekomme ich die gleiche Meldung (Could not read font in.....).
Im Auto-Modus wurde das Fontfile im ASCII-Modus übertragen, obwohl *.ttf nicht in der Filterliste für ASCII-Dateien steht.
Wenn ich das Fontfile im Binary-Modus hochlade funktioniert es wunderbar..... allerdings nur nach dem ich den Pfad zum Fontfile mit "./datei.ttf" angepasst habe (sonst ist "Could not find/open font in....." gekommen).
Beim Bild brauchte ich den Pfad nicht anpassen. :suspekt:
[/edit]
Das hab ich jetzt auch mal ausprobiert – Ergebnis (schon wieder) gleich null. Enorm frustrierend – ich glaube, ich schreibe dem Hostingprovider mal eine E-Mail, woran es denn liegen könnte.
 
Gumbo hat gesagt.:
Hast du es schon einmal mit einer anderen TTF-Datei probiert?
Währe evtl. eine Möglichkeit.
Ich weiss ja nicht wo er die Datei her hat, aber wenn er sie irgendwo runter geladen hat, kann sie dabei ja beschädigt worden sein.
Im gegensatz zu Linux interessiert es Windows nicht ob die Datei im ASCII oder Binary Modus übertragen wurde (gerade ausprobiert).
Auch spielt safe_mode=ON keine Rolle.
Ebenso langt ein CHMOD 0644.
Vieleicht einfach mal ein Fontfile von Windows probieren, ich z.b. habe die comic.ttf genommen.
 
Zurück