PHPについて


使えるバージョン

○PHP4(CGI)
○PHP5(CGI)
○PHP5+fastCGI
○自分でインストールしたPHP

私のお勧めは、PHP5(CGI)です。

使える関数など(GD・mbstring使える?

PHPinfo()ページを示しておきます。必要なのがあるかチェックしてください。
基本的なのはそろっていると思います。
PHP4:http://php.dreamhosters.com/php4-cgi/
PHP5:http://php.dreamhosters.com/php5-cgi/

PHP5+FastCGIを使う方法。

まずはじめに、FastCGIはPHP4では使えません。PHP5でのみ使用可能です。

<手順>
1、コントロールパネルでPHP5を選ぶ。

2、コントロールパネルでFastCGIにチェックを入れて有効にする

3、「php5-wrapper.fcgi」というファイルを以下の内容で作る。

#!/bin/sh

export PHP_FCGI_CHILDREN=3

exec /dh/cgi-system/php5.cgi

4、「.htaccess」ファイルに以下を追記

AddHandler fastcgi-script fcg fcgi fpl

AddHandler php5-fastcgi .php

Action php5-fastcgi /php5-wrapper.fcgi

5、アップロード
「php5-wrapper.fcgi」、「.htaccess」を動かしたい公開フォルダにアップロード
普通は、ドメイン名のフォルダにアップロードすれば良いと思います。
パーミッションを「php5-wrapper.fcgi」は744、「.htaccess」は644にしてください。

6、動作確認
SSHでログインして「ps aux」で、FastCGIプロセスが3つあることを確認してください。

[dinar]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

user 682 0.0 0.1 17180 6148 ? Ss 15:27 0:00 /dh/cgi-system/php5.cgi

user 21117 0.1 0.3 23872 11924 ? S 15:27 0:00 /dh/cgi-system/php5.cgi

user 7576 0.0 0.3 23872 11920 ? S 15:27 0:00 /dh/cgi-system/php5.cgi

user 23783 0.5 0.0 2632 1500 pts/7 S 15:30 0:00 -bash

user 20840 0.0 0.0 2488 860 pts/7 R+ 15:30 0:00 ps aux

詳しい説明は以下のページを参考にしてください(英語)、
http://wiki.dreamhost.com/index.php/PHP_FastCGI

module版PHPは使えないの?

Apache module版のPHPは、2006年の春に提供中止になっています。
高速にPHPを動かしたいなら代わりに、PHP5+FastCGIを使ってほしいそうです。

ちなみに、中止した理由ですが、Apache module版だと、Dreamhost管理人がユーザごとのPHP負荷を計測するのが不可能なのが原因だそうです。過去に、悪質な超高負荷PHP(modeule版)で鯖が重くなったときに、原因スクリプトを突き止めるのに時間がかかり、、他のユーザに迷惑がかかりそうになった事があったらしいです。ですからみんなのメリットを考えて提供中止にしたようです。

PHP4がお勧めできない理由

PHP4(CGI)版のPHPinfo()をよく見ると分かりますが、一部標準的ではない仕様があります。

変数
$_SERVER['SCRIPT_NAME']'cgi-system/php.cgi'
$_SERVER['SCRIPT_FILENAME']'/dh/cgi-system/php.cgi'

本来は設置しているスクリプト名が値として返ってくるものです。このため、動作しなくなるPHPスクリプトがあります。
解決方法ですが、PHPスクリプトのソースコードの中のSCRIPT_NAMEやSCRIPT_FILENAMEを実際のスクリプト名に書き換えれば動きます。
面倒ですし、PHP5に対応しているのならPHP5を使うのが良いと思います。

他の方法として、自分でオプションを指定して、PHP4をインストールすることもできます。
http://wiki.dreamhost.com/index.php/Installing_PHP4 (英語)