ich schreibe gerade wieder an einem umfangreichen cronjob. Dabei taucht immer wieder das gleiche nervige Problem auf:
solange ich den cronjob entwickle gebe ich mir natürlich Fehlermeldungen aus. (Den Job führe ich im Webmin über den cronserver aus) Mein error-reporting steht auf all+strict. Ich müsste also alles bekommen. Das passiert auch ganz normal so wie es soll, wenn der Fehler in der Hauptdatei selbst auftaucht. Baue ich aber einen Fehler in einem includeten Script ein erhalte ich keinerlei Ausgabe. Was zuvor ausgegeben wurde ist da. Ist es ein Syntaxfehler gibt's rein gar nix!
Woran liegt das? Was ist beim Cronjob anders, das trotz error-reporting nichts ausgegeben wird, was in den incs fehlerhaft ist.
Umgekehrt!
Syntaxfehler in der Datei mit dem Errorreporting werden nicht angezeigt, weil das Errroreporting erst nach dem Parsen ausgeführt wird.
Fehler in include Dateien werden gezeigt.
Danke für die fixe Reaktion, aber dem ist leider nicht so.
Hab grad nochmal zum Test einfach eine Zeichenkette in den Code gepackt. Tue ich das in dem aufgerufenem Script erhalte ich den "Parse error", tue ich das in einem includeten meldet der Server "keine Ausgabe", obwohl der Fehler der selbe ist^^
bestimmt, aber genau den such ich ja. Genau diese Kombi ist mir ja das Rätsel.
Gibt es da nichts in der Art "Ich hab da mal gelesen, daß bei cron und Fehlern..." oder so? Eigentlich brauch ich auch nur einen Ansatz, damit ich weiter prüfen kann. Aber ich hab halt keine Idee, woran es überhaupt noch hängen könnte.
Was anderes als Nebel hab ich nur leider nicht. gern kriegst du den Code. Ich habe ihn ja schonsoweit reduziert, daß er nichts macht, außer Fehlerausgaben zu provozieren^^
das gibt eine korrekte fehlermeldung aufgerufenes Script
PHP-Code:
#!/usr/bin/php
<?php
error_reporting (E_ALL | E_STRICT);
ini_set ('display_errors', 'On');
ini_set ('log_errors', 'On'); ini_set ('error_log','/www/v6errorCRON.log');
set_time_limit(1000);
ignore_user_abort(true);
belibiger Text zum Provozieren eines ParseFehlers
include ('class/test.php');
?>
inkludiertes Script
PHP-Code:
<?php
echo 'hallo';
?>
mei dem Fehler meldet der cronserver, daß keine ausgabe erfolgt ist. aufgerufenes Script
1. Einen user_abort wirds nie geben! Also gibts da auch nix zu ignorieren.
2. Was hat das Timelimit in einem mini Script zu suchen? ;-)
3. Du solltest dein "errorlog" erstmal ausgiebig auf der Kommandozeile testen, um die Funktion sicher zu stellen.
4. Vermutlich wird die include Datei einfach nicht gefunden, oder die falsche geladen. Wetten?
Zitat:
bei allen normalen Browseraufrufen, taucht dieses Verhalten ja auch nicht auf, sondern nur bei cronjobs.
Dann rufe das Script doch über wget auf....
1. dann kommen deine Meldungen
2. wird dann die bekannte und funktionierende php.ini verwendet
3. entspricht dann CWD und der Include Path deinen Erwartungen
1. Einen user_abort wirds nie geben! Also gibts da auch nix zu ignorieren.
2. Was hat das Timelimit in einem mini Script zu suchen? ;-)
Blieben nur für den Fall drin, daß daran was hing. Wie gesagt, hab mein Script immer weiter reduziert. Die SystemBefehle hatte ich dann für Dich nochmal drin gelassen. Wenn Sie raus sind gibt's ja dennoch einen Standardwert. Hätte sein können, daß von Dir jetzt ein "ach ja, damit passeirt folgendes" kommt...
Zitat:
Zitat von DokuLeseHemmung
3. Du solltest dein "errorlog" erstmal ausgiebig auf der Kommandozeile testen, um die Funktion sicher zu stellen.
hmm, andere logs werden ganz normal geschrieben.
Zitat:
Zitat von DokuLeseHemmung
4. Vermutlich wird die include Datei einfach nicht gefunden, oder die falsche geladen. Wetten?
oh doch, die ausgaben geschehen ja, solange kein Fehler da ist. Es funktioniert ja alles. Ist nur doof, wenn ich mich mal vertippe und dann das falsche Pixel im Code ohne Anhaltspunkt suchen muss - so ein "Komma statt Semikolon" zB.
Zitat:
Zitat von DokuLeseHemmung
Dann rufe das Script doch über wget auf....
1. dann kommen deine Meldungen
2. wird dann die bekannte und funktionierende php.ini verwendet
3. entspricht dann CWD und der Include Path deinen Erwartungen
werde das gleich mal testen. includepath und php.ini werden aber stimmen, weil das ganze ja läuft, solange kein Syntaxfehler da ist...
Mal schauen, was mir über wget gemeldet wird...
auf jeden Fall schonmal ein großes Danke für Deine Schnelligkeit!!