PHP が Apache モジュールとして実行されている場合php.ini、Apache 構成ファイルのディレクティブを使用して、利用可能な構成設定にアクセスしたり変更したりできます。それらのディレクティブは...
php_value
php_flag
php_admin_value
php_admin_flag
php_*とphp_admin_*バージョンの違いがこの問題の鍵です。を使用して設定された値php_admin_valueはphp_admin_flag、Apache グローバルおよび VirtualHost 構成でのみ設定できます。それらは.htaccess または ini.set() によってオーバーライドできません。
error_reporting()関数は呼び出しに相当し、ini_set()同じ規則に該当します。
そこで、問題のサイトの仮想ホスト構成に入り、次の行を追加しました...
php_admin_value error_reporting 22527
php_admin_value error_log /custom/log/path/php_errors.log
php_admin_flag log_errors On
php_admin_flag display_errors Off
最初の行は のビットごとの値ですerror_reporting = E_ALL & ~E_DEPRECATED。簡単なスクリプトを作成して、この値を取得しました。
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
echo ini_get("error_reporting");
非推奨アラートとともにシステム通知を無視する場合 -- error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE-- ビット単位の値は22519.
2 行目は、すべての PHP エラーをカスタム ログに送信します。デフォルトでは、PHP はsyslog通常、/var/log/apache2/error.logまたは同様の値を使用します。
3 行目は、ファイル ログを有効にします。
最後の 1 つは、ページ上のエラー表示をオフにします。
ここでも、操作の優先度と順序が重要です。これらの値は で定義された値php.iniよりも優先され、同時に、アプリケーション内または.htaccessファイル内の他の変更によってオーバーライドされることはありません。
php.ini の外で設定値を変更する方法の詳細については、PHP ドキュメントを参照してください。