Web Pageへのアクセス時のPHPのエラーログへの対応 [CentOS]
久しぶりに CentOS 6 の Apache 上に構築した Web サイトの Web Page (PHP で作成) にアクセスしたところ、エラーログが出力されるようになってしまった。以前には発生していなかったため、原因の調査と対応を行った。
詳細は、以下の通りである。
[ソフトウェアのバージョン]
・httpd-2.2.15-54.el6.centos.i686
・php-pdo-5.3.3-48.el6_8.i686
1. エラーログの内容
2. 対応
3. 備考
詳細は、以下の通りである。
[ソフトウェアのバージョン]
・httpd-2.2.15-54.el6.centos.i686
・php-pdo-5.3.3-48.el6_8.i686
1. エラーログの内容
下記の 2 種類に大別される。
(1) 未定義の配列要素の参照に関するもの
PHP Notice: Undefined index: xxx in yyy.php on line zzz, referer: http:...
・xxx: 連想配列のキー
・yyy: ソースファイルのパス(拡張子を除く)
・zzz: 当該箇所の行番号
(補足)
下記のような箇所で発生する。
$width = $_GET['width']; $client = $_SERVER['HTTP_CLIENT_IP'];
(2) タイムゾーンの設定に関するもの
PHP Warning: xxx(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. ...
2. 対応
いずれも深刻なエラーではなく、notice または warning レベルの事象である。
よって、ソースの変更ではなく、これらの事象に関するログ出力を抑制することにする。
(1) エラーログ (1) への対応
/etc/php.ini の error_reporting の設定値を変更する。
(旧) error_reporting = E_ALL & ~E_DEPRECATED ... (注1) (新) error_reporting = E_ALL & ~E_NOTICE ... (注2)
(注1) 運用時の推奨値(インストール直後の /etc/php.ini での設定値)
(注2) デフォルト値(未設定時に採用される値)
(補足)
ソースを変更する場合には、当該部分を下記のように変更する。
$width = isset($_GET['width']) ? $_GET['width'] : ''; $client = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : '';
(2) エラーログ (2) への対応
/etc/php.ini の date.timezone を設定する。
(旧) 未設定(インストール直後の /etc/php.ini での設定状況) (新) date.timezone = Asia/Tokyo
3. 備考
PHP のバージョンアップに時に、デフォルト値の変更、または設定ファイルの更新漏れが発生したものと思われる。
コメント 0