レンタルサーバCPIでPHP

とあるお客さんからプログラムを移設して欲しい旨連絡をいただいた。基本的にファイルを移行して、データベースを移行して、キャッシュ用ディレクトリのパーミッションを変更するだけで動くはず、だった。

しかしファイルを設置しても、インターナルサーバエラー(レスポンスコード500)が返される。

ちょっと困ったなぁ、と思いつつhtaccessファイルに記述した特殊な設定をコメントアウトしてみた。しかしそれでもNG。諸々調べてみて、CPIの専用サーバプランであることがわかった。そしてそのサーバのPHPは、CGI版!。
「できません」と放置するわけにもいかないので、最低限の設定をしてみることにした。
まずhtaccessファイルで記述してある、PHP関連の設定を全てコメントアウト。次にhtaccessファイルの末尾に、拡張子phpがついたものはCGIとして動作するよう以下のように記述した。

AddType application/x-httpd-cgi .php

これで拡張子phpがついたファイルをCGIとして認識してくれるようになる。
次にPHPファイルの一行目にCGI版PHPへのパスを記述。これはPerlなどでおなじみの記述だ。記述したのは以下の一行。

#!/usr/local/bin/php-cgi-4.3.11

この記述は関連するPHPファイル全てに記述する必要はない(つまりrequireやincludeで呼び出されるようなファイルはそのままでよい)。実際にapacheから呼ばれるファイルの一行目にだけ記述すればよい。

そして最後。CGIなのでPHPファイルに実行権限を与えなくてはいけない。いわゆるパーミッション。パーミッションはとりあえず755を設定しておいた(最近はFTPソフトからでもパーミッション変更できるので楽チン)。

これで何とか動作してくれた。PHPプログラムを実行しようとしたときに、プログラムのソースがそのまま表示されてしまうような場合は、モジュール版ではなく、CGI版が入っている可能性もある。そういった場合は上記の手順を踏めば、CPIに限らず動くようになるはず・・・(上記手順だとhtaccessが使えるという条件は必要だが・・・)。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net