Dreamhost で php.ini を設定する方法

Date
2007-04-28 (Sat)
Category
php

追記事項があります。

Dreamhost には Wiki があって、たいていの情報はそこに集まっています。php.ini に関しては、以前にコメント欄で教えてもらって以来、ずっと使っていたんですが、今回もう一度自分で設定する機会があったので、まとめ直しておきます。前述の Wiki には、2つ項目があってだいたい同じような事が書いてあります。それらの訂正なども含めて。あと あなたの知らない PHP 5つの秘密。 なんて記事を訳した手前、PHP4 に関しては、スルーしておきます。

wiki.dreamhost.com : Custom PHP.ini
wiki.dreamhost.com : PHP.ini

手順

自分の設定を書いた php.ini を使いたいドメインの document root に cgi-bin というディレクトリを作ります。以下では dreamhost というログインネームで bash を使っていて、dreamhost.com を運用していると仮定します。

$ pwd
/home/dreamhost
$ cd dreamhost.com
$ mkdir cgi-bin

次に php の cgi バイナリと php.ini ファイルをコピーします。

$ cp /dh/cgi-system/php5.cgi $HOME/dreamhost.com/cgi-bin/php5.cgi
$ cp /etc/php5/cgi/php.ini $HOME/dreamhost.com/cgi-bin/php.ini

ここで php.ini を更新しましょう。FastCGI 経由で起動されるとはいえ、php のスクリプトが起動されるたびに読み込まれてるはず、なので、短い方がいいと思います(が、どうなのだろう?また今度調べましょう)。僕はコメントなどは全部削除して、5KB くらいにしました。

ここで、.htaccess ファイルを作成して、document root 以下にある .php ファイルでは、全てこの cgi-bin 以下にある php バイナリを経由するようにします。

$ pwd
/home/dreamhost/dreamhost.com
$ vi .htaccess

.htaccess

AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5.cgi

ここで5分くらいハマりました。僕はものぐさなので、cp するとき php5.cgi の名前を php.cgi に変えませんでした(Terminal では tab キーで directory 名の補完をしてしまうので)。上記の wiki にある .htaccess をコピペしたら

Not Found
The requested URL /cgi-bin/php.cgi/php/script.php was not found on this server.

と、404 がでてしまいます。なぜかというと、Action の deploy 先が php5.cgi ではなく php.cgi だったからです。というわけで、上記の .htaccess では php5.cgi としておきました。

次に permission の設定を正しくします。

$ chmod 644 $HOME/dreamhost.com/.htaccess
$ chmod 755 $HOME/dreamhost.com/cgi-bin
$ chmod 700 $HOME/dreamhost.com/cgi-bin/php5.cgi
$ chmod 600 $HOME/dreamhost.com/cgi-bin/php.ini

上記 wiki よりだいぶ厳しい permission ですが、dreamhost では CGI がユーザ権限で起動しているので(というか CGI がユーザ権限で起動しているのか)動きます。

<?php
echo `whoami`;
?>

とかすれば、どのユーザで実行されているかわかるはず。

最後に、php のバイナリを dreamhost で使われている最新に追随させるためのスクリプトを書きましょう。

$ pwd
/home/dreamhost/dreamhost.com
$ cd ..
$ mkdir bin
$ vi bin/php-copy

php-copy

#!/bin/sh
CGIFILE="$HOME/dreamhost.com/cgi-bin/php.cgi"
rsync -a /dh/cgi-system/php5.cgi "$CGIFILE"

wiki.dreamhost.com : PHP.ini では .ini をいちいち正規表現で処理していますが、それはアフォらしいので省きました。っつぅか、php.ini はそんなに書き換えないでしょう。あとは 上記ファイルを cron で回します。

$ crontab -e
@weekly /home/dreamhost/bin/php-copy

あえてもう一個ハマりどころを上げるとすると、僕は error を別ファイルに書き出して、display_errors は off にする人なので、error_log に指定したファイルを作っておく事でしょうか。permission の所に書いた通り、php はユーザ権限で起動しているので、chmod 600 php-error.log でいいはずです。それとその log は document root より上に置くべきということも。

追記 on June 3, 2007:ここに挙げた設定に加えて、Dreamhost で php.ini を設定する方法 続き に書いた内容ももれなくやっておいた方が、セキュリティ上好ましいでしょう。

Comment:0

Comment Form

Remember Me?


Trackback:0

TrackBack URL for this entry
http://blogs.grf-design.com/mt/mt-tb.cgi/209
Listed below are links to weblogs that reference
Dreamhost で php.ini を設定する方法 from The Croton

Return to Page Top