Error Reporting kann nicht ausgeschaltet werden?
Phil
- php
0 Vinzenz Mai0 Phil
0 ChrisB
Hallo zusammen
Ich brauche mal eure Hilfe. Ich möchte gerne alle PHP-Fehlermeldungen für eine einzelne Datei abschalten. Leider klappt es nicht, die Fehlermeldungen werden immer angezeigt.
error_reporting(0);
ini_set('display_errors', 0);
ini_set('display_startup_errors ', 0);
Dieser Code wird genauso ignoriert wie wenn ich die PHP-Fehlermeldugnen in einem .htaccess File ausschalte.
Danke!
Hallo,
Ich brauche mal eure Hilfe. Ich möchte gerne alle PHP-Fehlermeldungen für eine einzelne Datei abschalten. Leider klappt es nicht, die Fehlermeldungen werden immer angezeigt.
link:http://de.php.net/manual/de/function.error-reporting.php@title=error_reporting;
[link:http://de.php.net/manual/de/function.ini-set.php@title=ini_set]('[link:http://de.php.net/manual/de/errorfunc.configuration.php#ini.display-errors@title=display_errors]', 0);
ini_set('display_startup_errors ', 0);
wie wäre es damit, sich die Rückgabewerte der Funktionen anzusehen und außerdem die Hinweise und Warnungen im Handbuch zu lesen?
Freundliche Grüße
Vinzenz
Danke für die Antwort. Ich habe das Handbuch gelesen, leidern habe ich noch nicht die richtige Lösung dafür gefunden.
Jetzt stehe ich irgendwie auf der Leitung.
error_reporting(0);
Sollte doch absolut genug sein um die Fehler auszuschalten, unabhängig des Rückgabewerts?
Jetzt stehe ich irgendwie auf der Leitung.
error_reporting(0);
Sollte doch absolut genug sein um die Fehler auszuschalten, unabhängig des Rückgabewerts?
Der Interpreter hat sich entschlossen, das Skript überhaupt nicht auszuführen, weil er meint, ihm würde da etwas untergeschoben, was er gar nicht ausführen kann. Warum sollte er dann ausgerechnet diesen Befehl aus dem kaputten Skript ausführen?
Du musst also an einem Zeitpunkt ansetzen, zu dem der Interpreter das Skript noch nicht parst oder interpretiert.
Bleibt .htaccess oder php.ini.
Notierst Du Du die Anweisung in der .htaccess schmeisst Dir der Apache einen 500er um die Ohren.
Wenn Du da das gemacht hast, was Du mit PHP scheinbar auch vor hast, nämlich beliebigen Murks zu notieren, dann wirst Du lernen müssen, dass das so nicht geht. Wenn Du aber korrekt notiert hast und es Dir durch eine Serverdirektive verboten ist, beliebig fehlerhafte Skripte ohne error-reporting auszuführen, dann kann ich dem Admin zu diesem Entschluss nur gratulieren.
Damit kommen wir zur Frage ob das, was Du vor hast, sinnvoll ist. Das ist es nämlich nicht. Verwende die hier verschwendete Zeit darauf, die Fehler zu beheben, sonst stellen Deine Skripte (womöglich) ein Risiko für Dritte, insbesondere auch für die Mitnutzer des Servers dar.
Solltest Du Fehlermeldung wegen noch nicht implementierter Funktionen oder Objekte unterdrücken wollen, dann include ein Skript "dummies.php" und notiere dort Platzhalterfunktionen, die Ausgaben liefern, die sehr deutlich zeigen, dass dort nur Platzhalter zurück gegeben werden. Allerdings zäumst Du das Pferd dann von hinten auf. Hast Du nämlich einen Plan davon, was Du programmierst, dann kannst Du die Funktionen auch zuerst programmieren, das Datenhaltungsmodell ist dann auch schon klar - das gilt unabhängig davon, ob dieser Plan auf Papier, elektronisch oder fahrlässigerweise nur in Deinem Kopf existiert.
Den Hinweis, Kram, der sich noch in Prä-Alpha-Versionen befindet, nicht öffentlich zugänglich zu machen, hast Du schon bekommen. Ist er nicht für Dritte zugänglich, dann stört es auch nicht und Du kannst in Ruhe entwickeln.
Geht es Dir darum, einem Chef oder Kunde vorzumachen, das da etwas wenigstens ansatzweise funktioniere, was in Wirklichkeit völlig für den Ar... ist, dann nehme Deinen Hut. Den genau wird Dir sonst ein anderer aufsetzen und Dir dabei ziemlich über die Ohren ziehen. Hinsichtlich Deines Ansinnens wäre das, zumindest auf den ersten Blick, auch gerechtfertigt.
Fred.
Hallo Fred
Vielen Dank für deine Hilfe und für eure lieben Worte.
Ich hätte mir gewünscht, dass Ihr zumindest nachgefragt hättet was ich damit bezwecke, bevor ihr mir Dinge unterstellt.
Mein Skript-Funktioniert perfekt! Natürlich ist mir auch klar, dass Fehlermeldungen nicht überschrieben werden sollten und ihren Sinn haben! Das ist auch gar nicht mein Ziel! Mein Skript wird täglich auf hunderte iPhones heruntergeladen. Auf dem iPhone überprüfe ich die String-Länge und erst danach werden die neuen Daten von der App weiterverarbeitet.
Sollte nun mein Server-Skript aus irgend einem Grund nicht mehr die korrekte Struktur aufweisen, möchte ich Fehlermeldungen vermeiden, da diese den Parser meiner App durcheinander bringen könnte. Das ist Kundenservice.
Sollte die Datei fehlerhaft sein, wäre eine leere Datei besser da diese gar nicht erst den App-Parser durcheinander bringen könnte.
Ich behaupt nicht, dass dies eine perfekte Lösung ist (könnte man auch mit md5 lösen) aber sie erfüllt den Zweck.
Hallo,
Sollte nun mein Server-Skript aus irgend einem Grund nicht mehr die korrekte Struktur aufweisen, möchte ich Fehlermeldungen vermeiden, da diese den Parser meiner App durcheinander bringen könnte.
also fehlt Deiner App die Fehlerbehandlung?
Das ist Kundenservice.
Das ist kein Kundenservice!
Freundliche Grüße
Vinzenz
Sie haben ein bisschen recht. Allerdings: Sobald der String heruntergeladen wird, prüfe ich die String-Länge. Das ist meine Fehlerbehandlung. Ein JSON File innerhalb der App zu validieren ist nicht ganz einfach, daher löse ich es lieber serverseitig. Ich bin auch kein Pro.
Mein Skript wird täglich auf hunderte iPhones heruntergeladen. Auf dem iPhone überprüfe ich die String-Länge und erst danach werden die neuen Daten von der App weiterverarbeitet.
Nein! Es werden die Ausgaben Deines Skriptes auf das IP-Phone geladen.
Sollte die Datei fehlerhaft sein, wäre eine leere Datei besser da diese gar nicht erst den App-Parser durcheinander bringen könnte.
Wie sollte denn das PHP-Skript fehlerhaft werden? Derlei geht nicht "einfach so" mal kaputt. Neue Versionen werden doch hoffentlich umfangreich getestet - oder nicht?
Und wenn die Ausgaben im IPhone weiterverarbeitet werden, dann kann man auch untersuchen ob da Beschwerden des Interpreters drin stehen. Genau genommen kann das sogar PHP, jedenfalls bei Laufzeitfehlern - nicht indes bei Syntax-Fehlern oder bei Parser-Fehlern, denn da sagt PHP ja gleich "Tschüss". Aber auch da kann die IPhone-App untersuchen, was denn geliefert wurde. Das muss sowieso getan werden, alles andere ist schlampig.
Fred
Hallo Fred
Ich finde diese Diskussion interessant, Sicherheit und Zuverlässigkeit ist mit ebenfalls wichtig.
Natürlich validiere ich die JSON-Datei serverseitig. Wie gesagt, ich bin kein Pro, ich dachte es schadet nicht wenn ich auch korrupte Dateien in betracht ziehe.
Und ja, die neuen Versionen werden umfangreich getestet!
Hi,
Ich möchte gerne alle PHP-Fehlermeldungen für eine einzelne Datei abschalten. Leider klappt es nicht, die Fehlermeldungen werden immer angezeigt.
error_reporting(0);
ini_set('display_errors', 0);
ini_set('display_startup_errors ', 0);
>
> Dieser Code wird genauso ignoriert wie wenn ich die PHP-Fehlermeldugnen in einem .htaccess File ausschalte.
Das könnte mehrere Ursachen haben.
Wenn ein Syntaxfehler im Script ist, würde der bereits die Ausführung dieser Anweisungen verhindern. Das wäre aber weniger wahrscheinlich, wenn es per .htaccess auch nicht änderbar ist (sofern diese Möglichkeit auf deinem System überhaupt besteht, kommt u.a. darauf an, wie PHP im Webserver eingebunden ist).
Daneben wäre noch denkbar, dass du einfach nicht befugt bist, diese Einstellungen zu ändern - wenn sie als admin value/flag auf höherer Ebene gesetzt worden sind.
Wende dich an deinen Server-Administrator.
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hallo ChrisB
Dank deiner Anweisung weiss ich jetzt wo das Problem liegt. Jetzt brauche ich nur noch eine Lösung dafür.
Ich möchte Parse- und Syntax-Fehler unterdrücken. Ich wusste nicht, dass dadurch die Anweisungen gar nicht ausgeführt werden. Wie kann ich Syntax und Parse Errors ausschalten ohne die php.ini zu verändern?
Wenn ich die Fehler mit der .htaccess Datei unterdrücken will, erhalte ich einen Internal Server Error.
Hallo,
Ich möchte Parse- und Syntax-Fehler unterdrücken.
nein, möchtest du nicht. Du solltest eine solche Datei nur nicht öffentlich zugänglich machen.
Ich wusste nicht, dass dadurch die Anweisungen gar nicht ausgeführt werden.
Wenn der Parser einen Fehler findet und deshalb NICHT mehr weiterparsen kann, gibts auch keinen Code der ausgeführt werden kann (der dann die Fehlerausgabe unterdrückt).
Wie kann ich Syntax und Parse Errors ausschalten ohne die php.ini zu verändern?
Die Antwort wurde schon in dieser Diskussion gegeben.
Wenn ich die Fehler mit der .htaccess Datei unterdrücken will, erhalte ich einen Internal Server Error.
Hast du dich vertippt? Darfst du das (also nicht vertippen, sondern die PHP-Einstellungen ändern)? Wurde die AllowOverride-Derektive entsprechend gesetzt?
Grüße