さくらのレンタルサーバのPHPはCGIモード

さくらのレンタルサーバを使おうと思っているのですが、いくつか今まで借りたことのあるサーバと違う点があってハマってしまいました。

1. .php 以外の拡張子で php を使うには

これは非公式FAQに詳しく説明されています。私の環境では、usr/local/bin/php が見つからず、勘で php_cgi_wrapper を php.cgi にリネームして、www/ にコピーし、パーミッションを704に設定してから、.htaccess に

AddHandler myphp-script .html
Action myphp-script /php.cgi

と記述すると、うまくいきました。
この設定を行うと、コントロールパネルの、php.ini の設定が効かなくなってしまいますが、www/ に php.ini を手動で配置すれば良いだけなので、むしろ分かりやすいかも知れません。

2. getallheaders()は使えない

If-Modified-Since を取得するために getallheaders() を使っていたのですが、この関数は php が Apache モジュールとして動作しているときにのみ利用可能で、逆に言えば、CGIモードでは使えません。
対処法はPHPの公式マニュアルに載っていました。

function emu_getallheaders() {
	foreach($_SERVER as $h=>$v){
		if(ereg('HTTP_(.+)',$h,$hp))
			$headers[$hp[1]]=$v;
	}
	return $headers;
}

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*