Error-log schreibt den virtuellen Server voll
PHP Warning: fread(): supplied argument is not a valid stream resource in ... /libraries/tcpdf/tcpdf.php on line 3914
Leider nicht zum ersten mal ist mir mein virtueller Server heute wieder mal unter der Last des Error-Logs zusammengebrochen. Mein kleiner Server hat nur 10GB Festplattenspeicher, davon war eine Error-Log-Datei satte 5,7 GByte und eine 2. - in einer anderen Domain - 2,8 GByte.
Ein Error-Log von 5,7 GByte?! Wie geht sowas? Wer macht sowas? Kein Editor, der bei mir so auf der Platte lag, wollte die Dateien öffnen, nicht mal die kleine mit den 2,8 GByte. Also habe ich da mal schnell ein PHP-Script geschrieben, dass mir die Datei in kleine Stücke zerlegt.
Danach konnte ich mir das mal ansehen, die ganze Datei sah so aus:
[Fri Mar 05 19:06:30 2010] [error] [client 208.115.111.248] PHP Warning: fread(): supplied argument is not a valid stream resource in /srv/www/vhosts/hundefreunde-burscheid.de/httpdocs/libraries/tcpdf/tcpdf.php on line 3915 [Fri Mar 05 19:06:30 2010] [error] [client 208.115.111.248] PHP Warning: feof(): supplied argument is not a valid stream resource in /srv/www/vhosts/hundefreunde-burscheid.de/httpdocs/libraries/tcpdf/tcpdf.php on line 3914
Die IP-Adresse: 208.115.111.248 ist dotnetcom.org, und die Suchen z.B. für SeoMoz.org.
Also ein Robot, müßte der nicht merken, dass da ein Fehler ist?
Den Robot habe ich nicht programmiert, also bleibt nur aussperren per robots.txt oder besser per .htaccess oder ich finde die Ursache für das Problem.
Stunden später weiss ich, ...
es ist nicht nur dieser eine Robot betroffen. Alle wollte ich aber nicht aussperren. Die zwei betroffenen Domains sind in Joomla 1.5.15 (die derzeit aktuelle Version) umgesetzt. Das Programm welches die Fehlermeldung liefert ist die Anzeige des Inhaltes als PDF-Datei.
So jetzt habe ich da mal etwas versucht, nun muss ich nur warten, bis ein Robot vorbeikommt, dasmit ich weiss, ob das funktioniert hat.
Die Auflösung folgt dann.
::
:
Die weitere Kontrolle der log-Dateien hat zwischenzeitlich ergeben, dass nicht nur Robots den Fehler auslösen. Das macht es mir möglich den Fehler selbst zu provozieren.
Ein Klick auf das PDF-Symbol (Joomla 1.5.15) im Internet Explorer 7 und voila die Error-Log Datei ist schlagartig auf stolze 300 MB (vorher 660 kB) angewachsen. Die PDF-Datei wird im IE auch nicht angezeigt.
Der Firefox hatte die PDF bei meiner Kontrolle immer richtig angezeigt. Dafür steht jetzt in der Log-Datei der Anfang des Problems gut lesbar:
[Sat Mar 06 20:09:23 2010] [error] [client 93.203.26.242] PHP Warning: imagejpeg() [<a href='function.imagejpeg'>function.imagejpeg</a>]: open_basedir restriction in effect. File(/tmp/jpgvIZ0Pk) is not within the allowed path(s): (/srv/www/vhosts/major-webdesign.de/subdomains/portal/httpdocs:/usr/share/psa-horde/pear:.) in /srv/www/vhosts/major-webdesign.de/subdomains/portal/httpdocs/libraries/tcpdf/tcpdf.php on line 3880
Wieso will der denn in das tmp-Verzeichnis vom Server schreiben, der hat doch sein eigenes tmp?
Die Ursachen
configuration.php
Bei dieser Domain war es ein Tippfehler in der configuration.php, das tmp-Verzeichnis hatte einen ungültigen Eintrag.
Nachdem ich dies korrigiert hatte, wird im Internet Explorer 7 die PDF-Datei weiterhin nicht angezeigt (Speichern unter ist allerdings möglich) das Vollschreiben der Error-Log ist aber weg.
Schreibrechte
Bei der anderen Domain waren fehlende Schreibrechte des Apache auf dem Verzeichnis tmp für diese Domain die Ursache.
Maßnahmen
Wegen des Problems im Internet Explorer mit der Anzeige der PDF habe ich zunächst mal die Anzeige des PDF-Icon überall deaktiviert. Wenn ich eine Lösung für dieses neue Probelm gefunden habe, kann ich sie ja wieder aktivieren.
Kontrolle der configuration.php und der Schreibrechte für die anderen Webseiten.
Daumen Drücken, dass das jetzt auch erledigt ist.
Anmerkung
Wie bereits oben erwähnt, ...







