Apache stürzt bei PHP + gd ab!?
WauWau
- webserver
Hi,
Hat irgendjemand eine Ahnung, weswegen Apache gerne mal (also 1 auf 10 Fälle, aber immer, wenn er lust hat) abstürzt, wenn man folgende Seiten recht oft aufruft:
<?php
header ("Content-type: image/png");
$mytext = (string) (isset($_GET["text"]) ? $_GET["text"] : 'Fehler');
$fontsize = 20;
$font = "C:\WINNT\Fonts\BATANG.ttf";
$size = imagettfbbox($fontsize, 0, $font, $mytext);
$breite = $size[2];
$hoehe = ($size[5]*-1);
$lrabstand = 2; // Abstand links und rechts
$ouabstand = 2; // Abstand oben und unten
$im = @ImageCreate ($breite+$lrabstand*2, $hoehe+$ouabstand*2)
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 127, 127, 127);
imagecolortransparent($im, $background_color);
ImageTTFText($im, $fontsize, 0, $lrabstand, $hoehe+$ouabstand, $text_color, $font, $mytext);
ImagePNG($im);
?>
Dieses süße kleine Scriptili gibt beim Aufruf mit ?text=MEINTEXT ein GIF mit dem Schriftzug "MEINTEXT" in irgendeiner bestimmten Schrift zurück.
Wie man unschwer erkennen konnte (am <font>-Verzeichnis), handelt es sich hierbei um eine windows-plattform (win2kpro), und um nun alle gegebenheiten aufzuzählen:
Ich verwende auf einer Seite als <h1> für ein paar Seiten Links auf diese Bilder, also z.B.
<h1><img src="/images/extrasites/construction/h1.php?text=Bla" alt="bla" /></h1>
sieht ganz nett aus. Nun habe ich z.B. 3 Überschriften auf einer Seite, und manchmal stürzt der Apache einfach bei der Anfrage des Browsers an die Datei h1.php ab!
Das sieht ungefähr so aus: Fehlermeldung von Windows: "Apache hat einen Fehler gemacht und muss beendet werden. Ein Fehlerbericht wird erstellt <ABBRECHEN>", was sich im nachhinein zu <OK> umwandelt - doch einen Fehlerbericht hat er nicht bestellt.
Ganz im Gegenteil, der Apache _wurde_gar_nicht_beendet_ - sondern läuft noch! Ganz gemütlich scheint der Browser sich die restlichen Bilder aus'm cache zu holen - auf'm webserver kann aber ganz normal weitergesurft werden - der Apache läuft nach wie vor.
Hat irgendjemand eine Idee, was da los ist? Ich habe Apache 2.0.4 mit PHP 4.3.3 als API, in der php.ini ist eben die gd-library eingebunden, soweit alles kein problem.
WauWau
hi ebenfalls,
Hat irgendjemand eine Ahnung, weswegen Apache gerne mal [...] abstürzt
Ich glaube, es ist nicht dein Apache, der abstürzt, sondern es ist dein PHP, was den Apache lahmlegt. Ich habe dein Script mal 1:1 übernommen und getestet und bekomme geliefert:
<b>Fatal error</b>: Call to undefined function: imagettfbbox() in <b>C:\test.php</b> on line <b>8</b>
Ich habe Apache 2.0.4
Nö, hast du nicht, weil es gar keinen Apache 2.0.4 gibt. Eventuell hast du Apache 2.0.48.
Grüße aus Berlin
Christoph S.
Hi nochmals,
Ich glaube, es ist nicht dein Apache, der abstürzt, sondern es ist dein PHP, was den Apache lahmlegt. Ich habe dein Script mal 1:1 übernommen und getestet und bekomme geliefert:
<b>Fatal error</b>: Call to undefined function: imagettfbbox() in <b>C:\test.php</b> on line <b>8</b>
Du hast die gd-library zur erstellung von bildern nicht, oder? Denn ansonsten würde es die funktion geben, es gibt sie nämlich auch, und er liefert mir auch das gewünschte ergebnis, es ist eben alles so wie es sein soll - abgesehen von dem Fehlerzeugs.
Ich habe Apache 2.0.4
Nö, hast du nicht, weil es gar keinen Apache 2.0.4 gibt. Eventuell hast du Apache 2.0.48.
stimmt, ich habe 2.0.48.
WauWau
morgens,
<b>Fatal error</b>: Call to undefined function: imagettfbbox() in <b>C:\test.php</b> on line <b>8</b>
Du hast die gd-library zur erstellung von bildern nicht, oder?
Doch, die habe ich natürlich. Du hast doch deutlich darauf aufmerksam gemacht, daß du diese library ansprechen möchtest, und was für ein "Tester" wäre ich, wenn ich das überlesen hätte ...
Grüße aus Berlin
Christoph S.
Moin!
<b>Fatal error</b>: Call to undefined function: imagettfbbox() in <b>C:\test.php</b> on line <b>8</b>
Du hast die gd-library zur erstellung von bildern nicht, oder?Doch, die habe ich natürlich. Du hast doch deutlich darauf aufmerksam gemacht, daß du diese library ansprechen möchtest, und was für ein "Tester" wäre ich, wenn ich das überlesen hätte ...
Aber du hast die Freetype-Lib nicht in der gdlib mit drin. Andernfalls wäre es nicht zu dieser Fehlermeldung gekommen. Eine nichtexistierende, aber im PHP standardmäißg enthaltbare Funktion hat immer den Grund, dass Bibliotheken nicht verfügbar sind.
- Sven Rautenberg
Hallo Sven & WauWau,
Aber du hast die Freetype-Lib nicht in der gdlib mit drin.
Da ihr beiden das anscheinend könnt, mal ne allgemeine Frage zum schreiben in PHP. Mir ist es bisher nur gelungen mit dem eingebauten Font zu schreiben - sieht arg häßlich aus.
Die Freetype-Bibliothek wie muß man die genau einbinden?
Und was braucht man da sonst noch so?
Ist die in GD 2 (bei meinem Hoster) schon mit drin?
Und überhaupt, irgendwie habe ich auch gelesen, wenn man von eigenen Fonts die entsprechende Schriftdatei machen will, muß das auf dem Produktionsserver gemacht werden, weil die Formate sich sonst unterscheiden?
Ich hab zu diesem Thema durchaus schon gelesen, aber als total-Neuling auf diesem Gebiet war mir die englische Literatur etwas zu hoch. Wäre nett, wenn ihr mir da mal zu einem Einstieg verhelfen könntet.
Gruß, Andreas