22

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"

解析エラーまたは致命的エラーをログに記録するか、画面に表示するにはどうすればよいですか?

ありがとう、てむり

更新: さまざまなスイッチで遊んだ後、IIS 固有の問題のようです。アイデアはありますか?

4

8 に答える 8

16

ファイル自体を解析できないため、php ファイル自体にエラー レベルを設定しても、ここでは問題は解決しません。

次のように、php.ini の error_reporting 行を変更する必要があります。

error_reporting = E_ALL

ところで: php.ini ファイルには、どのタイプのエラー メッセージを表示するかについての例がいくつかあります。

幸運を、

マケモズ

于 2009-06-02T21:39:46.093 に答える
5

Apache は、常に解析エラーを報告することを好むわけでもありません。コマンドラインから、実行します

php -l <file>

-l スイッチは、ファイルの構文をチェックするように PHP に指示します。マニュアルページを参照してください。

于 2009-06-02T20:40:37.007 に答える
3

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リンクを参照してください。)

于 2009-06-02T23:00:47.443 に答える
2

ターミナルで次のコマンドを使用して、スクリプトの構文を確認できます。

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/

于 2012-01-02T07:51:25.980 に答える
1

Rasmus Lerdorfが示唆しているように、開発サーバーでは常にerror_reporting(-1)を使用してください。

于 2012-08-20T11:45:36.960 に答える
0

Zend Framework (v1) を使用していて、Autoloader を使用している場合、次のコードは解析エラーが表示されないようにします。

self::$Autoloader->suppressNotFoundWarnings(true);

詳細については、次の回答を参照してください。

Zend フレームワークの使用時に PHP エラーを表示する

于 2014-08-08T13:43:39.293 に答える
0

Re:phpデスデスの真っ白な画面、その設定を発見しました

php_value error_reporting "E_ALL" または php_value error_reporting 8192

Windows 7 の .htaccess では、apache 2.2.4 および php 5.3.13 を使用した Wampserver は、空白の php エラー画面を表示する確実な方法です -- 今日、2014 年 6 月 3 日。これらの htaccess 行は、phpinfo( )、ただし、エラーの表示は、行が htaccess でコメント アウトされている (使用されていない) 場合にのみ発生します。

しかし...次の瞬間、私はそれを発見しました

php_value error_reporting 8191

phpinfo() 値を設定し、エラーメッセージをブラウザに表示することもできます! ああ!それは整数である必要があり、明らかに特定の整数または有効な整数である必要があり、十分な大きさの整数だけではありません!

于 2014-06-04T04:29:01.453 に答える
-1

これを試して。

error_reporting(E_ALL);
ini_set("display_errors", 1);
于 2009-06-02T20:39:20.583 に答える