PHPで解析エラーを画面に表示したいのですが、代わりに空白のページが表示されます。サーバーのエラーログファイルには何も書き込まれません。
私のセットアップ:PHP5.2.9/IIS 6(Apacheではありません!)。
私のPHP.INI:
error_reporting=E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On
error_log = "C:\Program Files\Zend\ZendServer\logs\php_error.log"
解析エラーまたは致命的なエラーをログに記録するか、画面に表示するにはどうすればよいですか?
ありがとう、テムリ
[〜#〜] update [〜#〜]:さまざまなスイッチで遊んだ後、IIS特定の問題です。アイデアはありますか?
Apacheは、解析エラーを報告することを常に好むわけではありません。コマンドラインから、
php -l <file>
-lスイッチは、PHPにファイル構文をチェックするように指示します。manページを参照してください。
E_STRICT
はE_ALL
に含まれていません(PHP 6まで)。E_STRICT
を取得し続けたい場合
Php.iniの場合:
error_reporting = E_ALL | E_STRICT
実行時:
error_reporting( E_ALL | E_STRICT );
構文エラーを確認するには、php.iniでエラー報告レベル(および display_errors )を設定する必要があります。 PHPで構文エラーが発生した場合、ランタイムは実行されないため、ランタイムでの設定は機能しません(display_errors
リンクを参照してください)。
ターミナルで次のコマンドを使用して、スクリプトの構文を確認できます。
php -l path/to/file.php
個人的には、この行を~/.bash_profile
ファイルに追加して、現在の作業ディレクトリ内のすべてのファイルでphp -l
を簡単に実行できるようにしました。
phpl() { for i in *.php; do php -l $i; done }
あなたが本当にハードコアなら、コマンドラインからアプリを実行することもできます。コンパイル時のエラーが発生する可能性がはるかに高くなりますが、それはちょっとクールです。
$ argv変数を使用して最初の引数$ argv [1]を取得し、それをリクエストとして使用できます。
<?php
// show those errors!
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
// simulate a web server request
$request = '/' . isset($argv[1]) ? ltrim($argv[1], '/') : '/';
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = $request;
次に、コマンドラインからスクリプトを実行できます。これは、次のサイトにアクセスするのと同じです:your-webapp.com/request/uri/here
php /path/to/script.php request/uri/here
これは、コマンドラインからCodeIgniterを実行するためのより包括的な例です。他の多くのフレームワークでも機能するはずです: http://phpstarter.net/2008/12/run-codeigniter-from-the-command-line-ssh/
Rasmus Lerdorfが示唆しているように、開発サーバーでは常にerror_reporting(-1)を使用してください。
再:php死死の空白の画面、私はその設定を発見しました
php_value error_reporting "E_ALL"またはphp_valueerror_reporting 8192
私のWindows7の.htaccessでは、Apache2.2.4とphp5.3.13を使用したWampserverが、空白のphpエラー画面を表示する確実な方法です-今日、2014年6月3日。これらのhtaccess行は、phpinfo( )が、エラーの表示は、htaccessで行がコメントアウトされている(使用されていない)場合にのみ発生します。
しかし...次の分私はそれを発見します
php_value error_reporting 8191
Phpinfo()値を設定し、ブラウザにエラーメッセージを表示することもできます! D'oh!それは整数でなければならず、明らかに十分な大きさの整数ではなく、明らかに特定のまたは有効な整数でなければなりません!
Zend Framework(v1)を使用していて、オートローダーを使用している場合、次のコードは解析エラーが表示されないようにします。
self::$Autoloader->suppressNotFoundWarnings(true);
詳細については、次の回答を参照してください。