43

ウェブサイトのすべてのエラーをオフにしようとしています。これを行う方法についてさまざまなチュートリアルに従いましたが、読み続けてエラーメッセージを開きます。足りないものはありますか?

php.iniファイルで次のことを試しました。

;Error display
display_startup_errors = Off
display_errors = Off
html_errors = Off
docref_root = 0
docref_ext = 0

何らかの理由で、存在しないファイルに対して fileopen() 呼び出しを実行すると、エラーが表示されます。明らかな理由から、これは実際の Web サイトでは安全ではありません。

4

12 に答える 12

29

代わりに、エラー メッセージを表示しないことを検討する必要があります。

ini_set('display_errors', 'Off');PHP コードで (または可能であれば ini ファイルに直接)設定し、error_reporting をオンのままにE_ALLするか、ログで見つけたいメッセージの種類を変更します。

このようにして、後でエラーを処理できますが、ユーザーにはエラーが表示されません。

完全な例:

define('DEBUG', true);
error_reporting(E_ALL);

if (DEBUG)
{
    ini_set('display_errors', 'On');
}
else
{
    ini_set('display_errors', 'Off');
}

または単に(同じ効果):

define('DEBUG', true);

error_reporting(E_ALL);
ini_set('display_errors', DEBUG ? 'On' : 'Off');
于 2014-02-11T10:52:26.767 に答える
9

ファイルphp.iniで、すべてのエラーに対してこれを試す必要があります。

error_reporting = off
于 2014-04-01T15:45:35.370 に答える
5

参考のためにこれを簡単に要約しましょう。

  • error_reporting()現在アクティブな設定をデフォルトのエラー ハンドラに適用します。

  • エラー報告の ini オプションを編集すると、デフォルトも変更されます。

    • ここでは、正しい バージョンを編集することが不可欠です。代わりに、php.ini通常/etc/php5/fpm/php.iniは最新のサーバー上にあります/etc/php5/mod_php/php.ini。CLI バージョンには個別のものがあります。

    • または、SAPI に応じて使用できます。

      • mod_php:オプション.htaccess付きphp_flag
      • FastCGI: 通常はローカルphp.ini
      • また、5.3 以上の PHP では、.user.ini

    • 通常どおり Web サーバーを再起動します。

コードが扱いにくく、何らかの理由で実行時にこれらのオプションをリセットする場合、別の簡単な方法は、すべての通知/警告/エラーを丸呑みするカスタム エラー ハンドラを定義することです。

set_error_handler(function(){});

繰り返しますが、これはお勧めできません。

于 2014-07-30T01:16:00.057 に答える
4

ファイルphp.iniで、すべてのエラーに対してこれを試す必要があります。

display_errors = On

ロケーションファイルは次のとおりです。

  • Ubuntu 16.04:/etc/php/7.0/apache2
  • CentOS 7:/etc/php.ini
于 2015-03-10T04:26:18.177 に答える
3

PHPも使えるerror_reporting();

// Disable it all for current call
error_reporting(0);

1 つの関数のみからのエラーを無視する場合は、@記号を先頭に追加できます。

@any_function(); // Errors are ignored
于 2013-04-11T12:54:47.437 に答える
1

私は通常、PHP のビルトイン エラー ハンドラーを使用します。これは、構文以外で発生する可能性のあるすべてのエラーを処理し、それ以外の場合は適切な「メンテナンスのためダウン」ページを表示します。

本番サーバーでのフォーマット PHP エラー

于 2015-03-10T04:33:01.043 に答える
0

php.ini ファイルを開きます (Linux を使用している場合は、sudo vim /etc/php5/apache2/php.ini)。

この行をそのファイルに追加します

   error_reporting = E_ALL & ~E_WARNING 

(他のエラーを無効にする必要がある場合 -> error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING )

    display_errors = On

最後に、APACHE サーバーを再起動する必要があります。

于 2016-01-05T09:26:52.707 に答える