3

私は PHP と nginx を実行しており、本番バージョンの php.ini を使用しています。したがって、変数 display_error は Off に設定されており、このようにしたいのには十分な理由があります。ただし、特定のファイルについては、エラー報告を有効にする必要があります。ini_set を使用してエラー報告を有効にしました。しかし、次のような単純なコード スニペット:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

echo "hi"errorrrrr
?>

エラーを追跡しません。HTTP 500 内部サーバー エラー メッセージを返すだけです。エラー報告を有効にするにはどうすればよいですか?

4

5 に答える 5

1

もちろん、構文エラーが発生した場合、PHP はこれらのディレクティブを実行しません。このスクリプトは実行すら開始されていないためです。解析段階で失敗したため。

注意が必要ですが、これらのディレクティブを設定するには別の方法を使用する必要があります。PHP を apache モジュールではなく CGI として実行しているように見えるため、ini ディレクティブを設定する唯一の方法は、php.ini 自体を編集することです。

念のため、実行phpinfo();して Server API の内容を確認してください。

とにかく、500 エラーが表示されるたびに apache の error_log をチェックして、何が起こったのかを確認する必要があります。

于 2010-03-16T17:53:01.560 に答える
1

log_errorsすべてのエラーをファイルに記録するために使用できるはずです。を使用して、特定のファイルにエラーを書き込むこともできerror_logます。これにより、作業が楽になります。

于 2010-03-16T16:01:19.787 に答える
1

.htaccessファイルにini設定を設定してみてください。

そもそも構文エラーが原因でコンパイルされない PHP ファイルに設定を入れると、設定が保持されません。

于 2010-03-16T18:00:17.893 に答える
1

PHP の構成を変更できない場合は、できるトリックがあります。エラーのあるファイルを含む新しいファイルを作成します。インクルードを行う前に、目的の構成を設定します。

error_reporting(E_ALL);
ini_set("display_errors", 1);
include 'some other file with a parse error.php';

次に、代わりにラッパー スクリプトを実行します。これが機能するのは、スクリプトが解析エラーで最終的に終了する前に、インクルードの前のステートメントが最初に評価されるためです。

于 2010-03-16T19:49:19.600 に答える
-1

私が探していた答えは、この答えのコメントにあります: PHP はエラーをまったく返しません

そもそも機能しない理由は、ファイルに構文エラーがあるため、PHP がまったく解析しないためです。したがって、log_errors 呼び出しを実行せず、php.ini の設定に依存する必要があります。

— cmptrgeekken 16 3月. 102010-03-16 18:16:00

于 2011-02-26T23:14:24.277 に答える