2010-07-12

[PHP] httpdocsディレクトリの上の階層にファイル書き出しをする

スピーバーというところでVPSでサーバーを借りるクライアントの案件があり、
PHPプログラムであるデータのファイル書き出しをしようと思ったところ、
通常のHTMLファイルを入れているhttpdocsの上の階層のディレクトリに書き出すことができませんでした。

「open_basedir restriction in effect」というエラーが出ていたので、
設定がらみの問題だろうなというのはわかっていたので、検索をかけてみました。

[参考サイト1]
http://blog.look-ss.jp/article.php/20071225140335935

ここの書き方がとてもわかりやすかったので、試してみたのですが、状況は変わらず。。
phpinfoで確認してみたところ、open_basedirの内容が変わっていませんでした。

さらに検索をかけてみたところ、下記のサイトは少しvhost.confの書き方が違ったので、
こちらで試してみました。

[参考サイト2]
http://kaiketsu-bookmark.seesaa.net/article/111677677.html

こちらの設定にすると、phpinfoの内容が書き変わっていました!
そしてもちろんPHPでのファイル書き出しも成功しました!!

というわけで、スピーバーでの成功例は、
(logdirというディレクトリを事前に作っておくとします)

/var/www/vhosts/ドメイン名/conf/vhost.conf を
<Directory /var/www/vhosts/ドメイン名/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/ドメイン名/httpdocs:/var/www/vhosts/ドメイン名/logdir"
</Directory>


と変更(もしくはファイル作成)し、コマンドプロンプトにて、
# /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=ドメイン名

念のため構文エラーがないか確認して
# /etc/init.d/httpd configtest

Apacheを再起動!
# /etc/init.d/httpd restart

でバッチリでした!


※2010-12-10追記
SSL環境にて同じことをする場合には、/var/www/vhosts/ドメイン名/conf/vhost_ssl.conf を
同じやり方で変更します。
その後のコマンドも上記と同じやり方でOKです。

Comment:

Trackback URL: