Plesk10+PHP5で発生するエラー解決のための各種設定

plesk_setting_for_php.gif

新規プロジェクト用に新しくGMOクラウドVPSPlesk 10ドメイン版)を契約したのですが、設定途中でいくつかエラーを出してしまったので、その原因と解決法を書いていこうと思います。

1.タイムゾーンを「Asia/Tokyo」に設定

まず、PHPのdate()関数を使ったプログラムを動かした時に以下のエラーが発生。

date(): 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. In case you used any of
those methods and you are still getting this warning, you most
likely misspelled the timezone identifier.
We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead

これは「システムのタイムゾーン設定が信頼できる状態になっていないよ。」 というエラーで「date.timezone = Asia/Tokyo」を設定するか、スクリプト内に「date_default_timezone_set()」を挿入して「Asia/Tokyo」を設定するように促されます。

いちいち各種スクリプトで「date_default_timezone_set()」を書くのも面倒ですから、ここはphp設定ファイルに「date.timezone = Asia/Tokyo」を設定してしまいましょう。

PleskではWebサイトを作成後にGUIでphp設定ファイルを変更できる機能があります。

plesk_setting_for_php_ini_timezone.gif

ここで、以下のように変更します。
保存したら特に再起動をかける必要もありません。

plesk_setting_for_php_ini_timezone2.gif

2.プログラム実行・読み込み可能なopen_basedirを追加

次に発生したトラブルが、WEBアクセスできるPHPスクリプトから、他のディレクトリのPHPスクリプトにアクセスしようとした時にエラーが発生。

Warning: require_once(): open_basedir restriction in effect.

具体的にはPleskで作成された「/var/www/vhosts/mydomain.com/httpdocs」の一つ上の階層に「myframework」ディレクトリを作成し、そこにあるPHPファイルをrequire_once()しようとしたので発生したエラーです。

これも1で説明したphp設定を編集するページの「open_basedir」に以下のようにカスタム値を設定します。 プログラムパスを通すのに似ていますね。

plesk_phpini_open_basedir.png

3.safe_mode設定の重複

1で説明したPHP設定で「safe_mode」を「Off」にして保存し、任意のPHPスクリプトにアクセスすると、突然以下のようなエラーが表示されるようになります。

PHP Warning:  Directive 'safe_mode' is deprecated in PHP 5.3 and
greater in Unknown on line 0
PHP Error[2]: realpath(): SAFE MODE Restriction in effect.
The script whose uid is 10000 is not allowed to access
/var/www/vhosts/mydomain.com owned by uid 0

エラー内容を見ると「『safe_mode』の記述が重複しているよ」とありますね。

実は、Pleskで作成したWebサイトごとのphp設定は「/etc/php.ini」そのものをいじっているわけではなく、Webサイトルート・ディレクトリ中の「conf/~httpd.include」ファイルの中に以下のような内容で記載されています。(内容は設定によって異なります)

# General settings
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts/mydomain.com/httpdocs/:/tmp/:/var/www/vhosts/mydomain.com/"
php_admin_flag display_errors on
# Performance settings
# Additional directives
php_admin_value date.timezone "Asia/Tokyo"

「safe_mode」の記載がありますね。 これが「/etc/php.ini」の「safe_mode」の記述と重複しているのが原因です。

このエラーを取り除くには「/etc/php.ini」の該当部分をコメントアウトすればOKです。

...(前略)...
; Safe Mode
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode
; safe_mode = On
...(後略)...

…ということで

以上でとりあえずエラーなしで動くような状態になったと思います。
あとは個別にチューニングして快適なPHP環境にしていってくださいませ。
それでは!

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2012-10-17