web-dev-qa-db-ja.com

特定のサイトのみの警告を非表示にするようにPHPエラーレポートを変更[Debian | Ubuntu]

_sites-enabled_から利用できる_/etc/Apache2/sites-available_をいくつか想像してみてください。 (Debianベースのディストリビューションのみがこのように機能します。)

実際のwarningに触れずに、特定のサイトからのphpスクリプトからのhtdocsメッセージをミュートすることはできますか?

通常、関連を実現するための解決策がいくつかあります。

  1. error_reporting()ディレクティブを追加します。 error_reporting(E_ERROR);を実行されたスクリプトに。
  2. Php_flagsを_.htaccess_ファイルに次のように設定します:_php_flag display_errors off_
  3. スクリプト内で_ini_set_を使用します。

    _ini_set('display_errors', 'Off');
    ini_set('display_startup_errors', 'Off');
    error_reporting(0);
    _
  4. 警告またはエラーをスローする関数の前に_@_を追加します。

  5. _php.ini_を実際に言うように変更
    _error_reporting = E_ALL ^ E_WARNING_
    _display_errors = 1_

ただし、これらはすべてhtdocsに触れるか、変更をグローバルに適用することを意味します。 htdocsが読み取り専用でマウントされていると想像してください。特定のサイトのみの警告(または通知)を抑制するにはどうすればよいですか?

Debian/Ubuntuには何らかの理由で_a2ensite_固有の構成があると想定しており、それらを変更できることを期待しています。 「利用可能なサイト」の設定例には_log_level_ディレクティブがありますが、これはログに記録されるメッセージの量を処理します。 PHPスクリプトが出力するメッセージではありません。

_php.ini_または_Apache2.conf_または_httpd.conf_に手動でセクションを追加することもできます。もし可能ならば。

以下も参照してください。

6
Redsandro

Apache vhost設定にアクセスできる場合は、もちろん、sites-availableディレクトリの仮想ホスト内でphp_flagディレクティブを使用することもできます。このように、それらはこの仮想ホストにのみ適用されます。

仮想ホスト内に次のようなものを追加します。

<IfModule mod_php5.c>
    php_admin_flag display_errors off
</IfModule>

編集:

実際のエラーのみを表示する場合は、phpディレクティブerror_reportingを使用して、表示するエラーレベルのタイプを説明する整数値を指定できます。

<IfModule mod_php5.c>
    php_admin_flag display_errors on
    php_admin_value error_reporting 22517
</IfModule>

これは次の設定と同等です。

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;

php.ini。ここに例としてより多くの可能な値:

https://web.archive.org/web/20131009000719/http://www.websitefactors.co.uk/php/2013/01/php-error-reporting-settings

エラー報告値計算機:

http://www.bx.com.au/tools/ultimate-php-error-reporting-wizard

12
etagenklo

追加した :

<IfModule mod_php5.c>
 php_admin_flag display_errors on
 php_admin_value error_reporting 30711
</IfModule>

/ etc/Apache2/sites-enabled/workに移動すると、問題なく動作します。

はい、私はそれらの通知を修正する必要があることを知っていますが、古いスクリプトに取り組んでいるので、それに戻る必要があります。今のところ、これで私の問題が解決し、opが探していたものでした。これが誰かを助けることを願っています。

1
Patrick Maher

.htaccessなしで、またはグローバルに設定を適用せずに、これを行う方法はありません。 Apacheはルートフォルダー(htdocs)外のファイルを「見る」ことができず、.htaccessファイルはサイトのフォルダーにある場合にのみ機能します。 php_flagも.htaccess以外では機能しません。

したがって、基本的には、サイトごとにsome変更または.htaccessファイルなしで行うことはできません。

0
Nathan C