PLESK & PHP & open_basedir & Safe Modeの問題
問題点
サーバ管理でよく使用されるPLESKですが、PHP の Safe Mode と open_basedir の設定によってよく問題を引き起こします。
PLESKでは各ドメインに WEB の公開用フォルダとして /httpdocs、プライベート用の非公開用フォルダとして /private というフォルダが用意されています。で、よくやる方法としてデータベースやシステムの設定を /private フォルダに格納し、 /httpdocs フォルダ内に配置された .php ファイルよりアクセスしようとしてこの問題にはまります。
(safe_mode自体はコントロールパネルより、設定出来ますが、open_basedirはできません)
対処方法
対処方法としては、/var/www/vhosts/yourdomain/conf/http.include に以下のように注意書きが入っていますので、これを参考にします。
(ちなみに 設定にはrootアカウントが必要です。confフォルダがrootでないと入れません)
# ATTENTION!
# DO NOT MODIFY THIS FILE OR ANY PART OF IT. THIS CAN RESULT IN IMPROPER PLESK
# FUNCTIONING OR FAILURE, CAUSE DAMAGE AND LOSS OF DATA. IF YOU REQUIRE CUSTOM
# MODIFICATIONS TO BE APPLIED TO THE CONFIGURATION, PLEASE, PERFORM THEM IN THE
# FOLLOWING FILE(S):
# /var/www/vhosts/<domain>/conf/vhost.conf
# /var/www/vhosts/<domain>/conf/vhost_ssl.conf
# /var/www/vhosts/<domain>/subdomains/<subdomain-name>/conf/vhost.conf
設定ファイルを作成する。
# vi /var/www/vhosts/<domain>/conf/vhost.conf <Directory /var/www/vhosts/<domain>/httpdocs> php_admin_flag engine on php_admin_value open_basedir none </Directory>
sslアクセス用の設定ファイルを作成する。
# vi /var/www/vhosts/<domain>/conf/vhost_ssl.conf <Directory /var/www/vhosts/<domain>/httpsdocs> php_admin_flag engine on php_admin_value open_basedir none </Directory>
修正が完了したので、httpd.include に上記のファイルを読み込ませる設定をして、httpdの修正を読み込ませる。
# /usr/local/psa/admin/bin/websrvmng -v -a # /etc/init.d/httpd restart
これで、修正が完了です。 phpinfo(); にて確認できます。