web-dev-qa-db-ja.com

PHP display_errors = Onでもエラーが表示されない

PHP 5.でApache2を実行しているUbuntuサーバーがあります。php.iniでerror_reporting = E_ALL | E_STRICTおよびerror_reporting = E_ALL | E_STRICT、ただしPHPはまだエラーメッセージを表示しません。Apache仮想ホストも使用しています。

また、PHP5.3が提供しなければならない最も厳格なエラー報告は何ですか?私は自分のコードを可能な限り最新で将来を見越したものにしたいと思っています。

43
wowpatrick

また、php.iniファイルに次のセットが含まれていることを確認する必要があります。そうしないと、デフォルトで設定されたログまたは仮想ホストの構成で指定されたログにのみエラーが記録されます。

display_errors = On

php.iniファイルは、サーバー上のすべてのPHPの基本設定です。ただし、これらはPHPコード内の任意の場所で簡単にオーバーライドおよび変更できます。適切なチェックは、display_errorsディレクティブをphp.iniファイルに追加することです。エラーは表示されないが、ログに記録されている場合は、これを先頭に挿入しますエラーの原因となったファイル:

ini_set('display_errors', 1);
error_reporting(E_ALL);

これが機能する場合、コードの前の部分でエラー表示が無効になっています。

78
Ray

私は同じ問題を抱えていて、最終的にそれを解決しました。私の間違いは、/ etc/php5/cli/php.iniを変更しようとしたことですが、ここで別のphp.iniを見つけました:/ etc/php5/Apache2/php.ini、変更されたdisplay_errors =オン、ウェブサーバーを再起動し、動作しました!

私のようなぼんやりした人に役立つかもしれません。

12
vk23

Parallels Plesk Panel 10.4.4を使用する仮想サーバーでも同じ問題が発生しました。解決策は(考えてくれたZappaのおかげで)error_reporting値をE_ALLではなく32767に設定することでした。 Pleskの場合:ホーム>サブスクリプション>(ドメインの選択)>カスタマイズ> PHP設定> error_reporting-カスタム値の入力-32767

7
Bartek Kosa

これは古い投稿ですが...私は頭痛を与えた同様の状況がありました。最後に、「@ include ...」でindex.phpにサブページを含めていたことがわかりました。「@」はdisplay_errorsがONであってもすべてのエラーを隠します

3
Tomek

Php.iniファイルの構成を更新するときに、Apacheを再起動する必要がある場合があります。 apachectl restartまたはApache2ctl restartなどを実行してみてください。

また、iniファイルに display_errors = on があることを確認してください。ただし、開発環境でのみ使用し、実稼働マシンでは使用しないでください。

また、最も厳格なエラー報告は、まさにあなたが引用したもの、E_ALL | E_STRICTです。 the php docs でエラーレベルの詳細を確認できます。

2
user456814

error_reportingフラグを確認します。E_ALLでなければなりませんが、Pleskの一部のリリースでは、("E_ALL")の代わりに引用符(E_ALL)があります。

この問題を解決しました引用符の削除")in php.ini

これから:

error_reporting = "E_ALL"

これに:

error_reporting = E_ALL
2
fremsoft

誰かが私の質問に似た問題を見つけた場合に備えて、ここに別の落とし穴を追加したいだけです。

Chrome(またはChromium)およびPHPを使用している場合、HTML属性内にあるPHPコードでエラーが発生し、ChromeはHTML要素全体を削除するため、ブラウザでPHPエラーが表示されません。

以下に例を示します。

<p>
  <a href="<?=missingFunc()?>">test</a>
</p>

Chromeでこのコードを呼び出すと、開始<p>タグを持つHTMLドキュメントのみを取得します。残りはありません。この<p>の後にエラーメッセージやその他のHTMLコードはありません。これはnot PHPの問題です。 Firefoxでこのページを開くと、エラーメッセージが表示されます(HTMLコードの表示時)。したがって、これはChromeの問題です。

どこかに回避策があるかどうかわからない。これが発生した場合、Firefoxでページをテストするか、Apacheエラーログを確認する必要があります。

1
kayahr

私も問題に遭遇しました。最後に解決策を見つけました。 UBUNTU 16.04 LTSを使用しています。

1)/ect/php/7.0/Apache2/php.iniファイル(/etc/php異なるバージョンのPHP but Apache2/php.iniはバージョンファイルの下にあります)、ERROR HANDLING AND LOGGINGセクションで次の値を設定します{display_error = On, error_reporting = E_ALL}

注-QUICK REFERENCEセクションでは、これらの値のディレクティブを見つけることもできますが、変更しないでください。

2)Apacheサーバーを再起動しますSudo systemctl restart Apache2

1
mswd745

私は同じ問題を抱えていましたが、障害のあるスクリプト自体の内部でini_set('display_errors', '1');を使用したため、致命的/構文エラーで起動することはありません。最後に、これを私の.htaccessに追加して解決しました:

php_value auto_prepend_file /usr/www/{YOUR_PATH}/display_errors.php

display_errors.php:

<?php
ini_set('display_errors', 1);
error_reporting(-1);
?>

それにより、私はphp.ini、特定のサブフォルダーに使用し、簡単に再び無効にすることができます。

1
mgutt

変更しているphp.iniが/ etc/php5/Apache2フォルダーにあることを確認してください。そうでない場合、影響はありません...

1
Johnz

このスレッドは古くてもまだですが、 this stackoverflow answer から良い回答を投稿する必要があると感じています。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

これは、何時間も物事を動かそうとした後、確かに私を救った。これが誰かの助けになることを願っています。

0
mikaelovi

私はこのスレッドが古いことを知っていますが、Ubuntuサーバーで同様の問題を解決したばかりで、このスレッドがPHPエラーを表示しません。

Php.iniでerror_reporting値の構成設定をいくつか試しました。 E_ALLから| E_STRICTからE_ALLおよびE_NOTICEまで、どれも機能しませんでした。ブラウザに構文エラーが表示されることはありませんでした(開発サーバーではかなり面倒です)。 error_reporting設定を「E_ALL」に変更した後、すべてが機能し始めました。 Ubuntu Oneric固有の問題かどうかはわかりませんが、Apacheを再起動すると、サーバーが提供していたHTMLページにエラーが表示され始めました。物事を混乱させる追加オプションとすべてのエラー報告が停止するようです。 HTH somone他。

0
Zappa

私はちょうどこの同じ問題を経験しましたが、私の問題はphp.iniファイルではなく、単純に、Apacheサーバーを通常のユーザーとして起動していることがわかりました。 「Sudo /etc/init.d/Apache2 restart」を実行するとすぐに、エラーが表示されました。

0

Apacheでも同じ問題があり、PHP5.5。Inphp.ini、次の行がありました。

error_reporting E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors Off

次の代わりに:

error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors=Off

=signがありませんでした)

0
hiszpan

PHP ISSを含むウィンドウでPHP $ ===を実行する場合、ISSページが表示されないようにします。

1)FastCGISettingsをダブルクリックし、PHPを編集します。StandardErrorModeをReturnStdErrLn500に設定します。

StandardErrorMode

2)サイトにアクセスし、エラーページをダブルクリックし、500ステータスをクリックし、[機能設定の編集]、[エラーレスポンスを詳細エラーに変更]、[OK]の順にクリックします

エラー応答を詳細エラーに変更

0
naw103