ID-Blogger

PHP4対応サーバでPHP4スクリプトが動作しない場合のトラブルシューティング

レンタルサーバだけでなく、無料サーバでも最近はPHPに対応するところが多くなってきました。Perlよりも簡単でサーバにもやさしいとなれば使ってみたいというのが人間の心情w
現在使用しているコチラのサーバに移行する際に、PHPで制作した各種スクリプトが動かなくて随分悩みました。PHP4対応サーバのはずなのに、同じPHP4対応のサーバで動いていたスクリプトが動かない...という現象です。PHP関連の解説書や解説サイト、配布スクリプトでも同様に動作しないときに役立つと思います。最近またPHPで開発する場面が増えてきたので、一応解決策を残しておきます。まあ大した内容でもないので、ご存知の方も解説サイトもたくさんあると思いますが...。

このトラブル解決で大事な部分は「サーバのPHPのバージョンを確認する」という事です。実はPHP4の中でも細かくバージョンが分かれております。"PHP4.1.X"以降と"PHP4.0.X"以前で、フォームからの入力データ受け取ったりクッキーを食べたりする「スーパーグローバル変数」のスクリプトの書き方が変わっているという事です。
PHPの正確なバージョンを調べるには、

 <?PHP phpinfo(); ?>

という超カンタンなソースコードのPHPファイルを制作してサーバにアップします。ファイル名は何でもOKです。このファイルをブラウザから参照すると、サーバーの稼動状況が全て表示されます。サーバにそのまま残しておくとセキュリティ上危険なので、確認が済んだら消去しておきましょう。

ソースコードのスクリプトを下記の表に照らし合わせて書き直せば稼動するはずです。対応する箇所を検索しながら修正すれば、すぐに終わると思います。

4.1.X 以降
4.0.X以前
概要
$_COOKIE
$HTTP_COOKIE_VARS
クッキー参照
$_ENV
$HTTP_ENV_VARS
システム環境変数
$_FILES
$HTTP_POST_FILES
アップロードファイル情報
$_GET
$HTTP_GET_VARS
GET形式のフォーム情報
$_POST
$HTTP_POST_VARS
POST形式のフォーム情報
$_SERVER
$HTTP_SERVER_VARS
サーバー変数
$_SESSION
$HTTP_SESSION_VARS
セッション変数

ソースコードの修正が終わったら、早速サーバにアップして動作確認をしてみましょう。今まで動かなかったPHPスクリプトが動作すると思います。確実ではないですが、場合によってはPHP3にしか対応していないサーバでもある程度のスクリプトを稼動させられるかもしれません。
カンタンなだけに意外な落とし穴になるかもしれないので、どうもうまく動かないという方はお試しあれw