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:1
- Forexman:2008-05-25 (Sun) 06:01
-
Hi. This is really interesting post. Thank You! I have just subscribed to Your rss!
Best regards
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