2010-09-29 5 views
10

Ich habe PHP 5.2.10 und PHP 5.2.14 (x86 nicht threadsafe Win32 Builds) auf einem Windows 2008 R2 Server und auf Windows 7 64 Bit installiert.Warum zeigt PHP 5.2.14 keine Fehler an (auch nicht über die Befehlszeile)?

Aus irgendeinem Grund weigert sich PHP 5.2.14, Fehlermeldungen anzuzeigen.

Selbst wenn ich die folgenden Einstellungen in php.ini gesetzt bekommt ich keine Fehler gemeldet, wenn ich 5.2.14 verwenden:

error_reporting = E_ALL 
display_errors = On 

Dies geschieht auch dann, wenn ein Testskript von der Kommandozeile ausgeführt wird unter Verwendung von php.exe mit ein bewusster Syntaxfehler:

c:\php>php test.php

PHP die richtige php.ini Datei verwendet, weil ich meine Einstellungen ändern sehen kann, wenn ich php.exe -i laufen.

Ich merke auch, dass php.exe in PHP 5.2.14 sehr langsam zu starten ist.

Wenn ich die gleiche Reihe von Tests mit PHP 5.2.10 auf den gleichen Maschinen ausführen, bekomme ich Fehlermeldungen gut gemeldet.

Beide der php.ini Dateien sind Lager (basierend off von php.ini-recommended), aber mit den error_reporting und display_errors Einstellungen geändert.

Antwort

5

Sie könnten display_startup_errors auch ermöglichen haben:

display_startup_errors boolean 

Even when display_errors is on, errors that occur during PHP's startup sequence are not displayed. It's strongly recommended to keep display_startup_errors off, except for debugging.

Sie die Datei auch auf Fussel mit c:\php>php -l test.php versuchen können, auf Syntaxfehler zu testen.

+0

Sie lernen jeden Tag etwas Neues. Es stellte sich heraus, dass PHP nicht in der Lage war, eine SQLite3-Erweiterung zu laden, da die Erweiterung pdo.dll (ist davon abhängig) nicht unkommentiert wurde. Wenn 'display_startup_errors' auf 'off' gesetzt war, schien dies Parsingfehler zu verschlingen. Vielen Dank. – Kev

+0

Eigentlich ... weiter untersuchen. Jemand hat den "error_reporting" Flags-Wert in Anführungszeichen gesetzt. Das ist der wahre Grund. d. h. "error_reporting =" E_ALL & ~ E_NOTICE "". – Kev

3

in letzter Zeit musste ich an jemand anderem Projekt arbeiten ... Nicht in der Lage zu debuggen, hatte ich keine andere Wahl als zu überprüfen: "error_reporting (0);"

Überprüfen Sie also Ihren Quellcode. Suchen Sie nach etwas wie diesem: "error_reporting (0);". Sobald Sie es gefunden haben, kommentieren Sie es !!!

Normalerweise müssen Sie das nicht in den Quellcode, sondern in die php.ini schreiben.

@ +

+0

Besser noch, fügen Sie einen Weg, um es während (und nur während der) Entwicklung zu deaktivieren. Diese Fehlermeldungen können Möchtegern-Hacker viel über Ihren Server erzählen. – EpicVoyage

8

Ich bin ein später PHP (5.4.24) ausgeführt wird, aber diese anderen Antworten fehlt die -d option I found exemplified elsewhere, die PHP-Display verständlich Parsing-Fehler macht, wenn aus dem cli läuft:

php -d display_errors test.php 

Dies ist die beste Antwort auf die Frage, die ich gegoogelt habe. nur die Linter mit -l Lauf sagt Ihnen

+2

Ich benutze dies als Alias ​​'alias phprun =" php -d display_errors "' –

11

„Fehler foo.php Parsen“ ich gefunden habe, dies ist wirklich ärgerlich, so ist hier eine Strategie für die Überprüfung der Syntax von CLI:

  1. Sie die INI-Datei nicht laden .
  2. Aktivieren Sie explizit display_errors und display_startup_errors.

php -n -l -d display_errors -d display_startup_errors path/to/your/phpfile.php

$ php -h 
-n    No php.ini file will be used 
-l    lint, syntax checking only 
-d foo[=bar]  Define INI entry foo with value 'bar' 
+0

Es gibt einen kleinen Tippfehler in display_errors Flag, obwohl dies die beste Antwort ist – ROLO

Verwandte Themen