10

PHP 5.2.10 および PHP 5.2.14 (x86 非スレッドセーフ Win32 ビルド) を Windows 2008 R2 サーバーおよび Windows 7 64 ビットにインストールしています。

何らかの理由で、PHP 5.2.14 はエラー メッセージの表示を拒否します。

で次の設定を行っても、php.ini5.2.14 を使用するとエラーは報告されません。

error_reporting = E_ALL
display_errors = On

php.exeこれは、意図的な構文エラーを使用してコマンド ラインからテスト スクリプトを実行した場合でも発生します。

c:\php>php test.php

php.iniを実行すると設定が変更されていることがわかるため、PHP は正しいファイルを使用していますphp.exe -i

php.exeまた、PHP 5.2.14 では起動が非常に遅いことにも気付きました。

同じマシンで PHP 5.2.10 を使用して同じ一連のテストを実行すると、問題なくエラー メッセージが報告されます。

両方のphp.iniファイルはストック ( に基づくphp.ini-recommended) ですが、error_reportingとのdisplay_errors設定が変更されています。

4

4 に答える 4

11

これは本当に面倒だと思ったので、コマンドラインから構文をチェックするための戦略を次に示します。

  1. ini ファイルを読み込まないでください。
  2. display_errors と 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'
于 2014-09-05T23:48:52.427 に答える
8

私は新しいPHP(5.4.24)を実行していますが、これらの他の回答には、コマンドラインから実行したときにPHPがわかりやすい解析エラーを表示-dする他の場所で例示されたオプションがありません:

php -d display_errors test.php

これは、私がグーグルで調べていた質問に対する最良の答えです。リンターを実行すると、-l「foo.php の解析エラー」のみが表示されます。

于 2014-03-06T23:11:19.903 に答える
5

display_startup_errors同様に有効にする必要がある場合があります。

display_startup_errors  boolean

がオンの場合でも、display_errorsPHP の起動シーケンス中に発生するエラーは表示されません。display_startup_errorsデバッグを除き、オフにしておくことを強くお勧めします。

c:\php>php -l test.php構文エラーをテストするために、ファイルを lint することもできます。

于 2010-09-29T08:46:20.680 に答える
3

最近、私は他の誰かのプロジェクトに取り組まなければなりませんでした...デバッグができないので、これを確認するしかありませんでした:

error_reporting(0);

したがって、ソースコードを確認してください。「error_reporting(0);」のようなものを検索してください。

見つけたらコメントしてね!!!

通常、これをソース コードに入れる必要はありませんが、php.iniファイルに入れます。

于 2010-12-09T11:08:26.610 に答える