htaccess経由でのみPHPのエラー表示を有効にする


113

私はウェブサイトをオンラインでテストしています。

現在、エラーは表示されていません(ただし、エラーが存在することはわかっています)。

.htaccessファイルのみにアクセスできます。

.htaccessファイルを使用してすべてのエラーを表示するにはどうすればよいですか?


次の行を.htaccessファイルに追加しました。

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

そして、ページが表示します。

内部サーバーエラー


私はいくつかグーグルを行い、htaccessにいくつかのフラグを追加しました。と私のページを再び表示できません
Ogugua Belonwu

3
htaccessからこれらの設定を上書きする権限がないようです。あなたは、設定する必要があるかもしれませんAllowOverride Allあなたはそれへのアクセス権を持っている場合は、Apacheの設定で。
kapa '25年

Apacheエラーログを確認してください。500内部エラーが発生する正確な理由が必要です。ブラウザに表示されるものは、診断の目的には役に立たない設計です。
Marc B

回答:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
私はこれらの行をhtaccessに追加しました:php_flag display_startup_errors php_flag display_errors on php_flag html_errors on and the pages show internal server error
Ogugua Belonwu

4
PHPをApacheモジュールとして使用する場合、Apache構成ファイル(httpd.confなど)および.htaccessファイルのディレクティブを使用して構成設定を変更することもできます。これを行うには、「AllowOverride Options」または「AllowOverride All」権限が必要です。php.net/manual/en/configuration.changes.php
サイレックス

PHP_errors.logを作成し、他の方法で777にしてください。おそらくapacheによって作成され、入力されたファイルは表示されません。
PJunior

2
oguguaのように、これらの行を使用すると、内部サーバーエラーも発生します。
着陸

1
500を取得した場合、それはおそらくmod_phpではなくphp-fpmを使用しているためです。
mpchadwick

41
php_flag display_errors on

エラーの実際の表示をオンにします。

表示するエラーのタイプを設定するには、以下を使用する必要があります。

php_value error_reporting <integer>

このページの整数値と組み合わせる:http : //php.net/manual/en/errorfunc.constants.php

整数に-1を使用すると、すべてのエラーが表示され、新しいタイプのエラーが追加された場合の将来の保証になります。


17

既存の回答に詳細を追加したい:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

ログファイルに777または755のアクセス許可を与えてから、コードを追加します

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

.htaccessの最後。これにより、ログファイルが保護されます。

これらのオプションは、開発サーバーに適しています。運用サーバーでは、エンドユーザーにエラーを表示しないでください。したがって、表示フラグをオフに変更します。

詳細については、次のリンクを参照してください:htaccessによる高度なPHPエラー処理


1
エラーログファイルにchmod "0644"を与えるのはどうですか?それはまだ機能していますか?
Andre Chenier

2

致命的なランタイムエラーのみを表示する場合:

php_value display_errors on
php_value error_reporting 4

2

これは私にとってはうまくいきます(参照):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.