このセクションではPHPのインストール方法に関する一般的な質問扱います。 PHPは(OSX以前のMacOSを除けば)ほとんど全てのOSと、ウェブサーバで利用 可能です。
PHPをインストールには、ディストリビューションに含まれる INSTALL ファイルの説明に従っ てください。ウィンドウズユーザの場合は加えて install.txt ファイルも読む必要 があります。またウィンドウズユーザのための役立つヒントが ここ にあります。
1. Unix/Windows: php.iniファイルはどこに置けばよいのですか?
UNIXの場合、デフォルトでは /usr/local/lib です。コンパイル時に --with-config-file-path オプションを使用してこの場所を変えたいという人も多いでしょう。 例えばこのようにすることも出来ます:
ウィンドウズの場合、 php.ini のデフォルトパスはWindowsディレクトリになります。 Apacheウェブサーバを使っている場合はまずApacheがインストールされているディレクトリ (例えば c:\program files\apache group\apache にある php.ini を探そうとします。このため、異なる php.ini ファイルを異なるバージョンの Apacheごとに置いておくことができます。
設定ファイル の章も参照してください。
2. Unix: PHPをインストールしましたが、ファイルをロードするたびに 'Document Contains No Data(ページが表示できません)'というメッ セージが表示されます。何が起こっているのですか?
これはおそらくPHPに何らかの問題が起こっていてコアダンプしている という状態です。サーバのエラーログを見てこのケースかどうかチェッ クしてください。そして小さなテストケースで問題を再現させてみてく ださい。もし'gdb'の使い方が分かるならバグレポートに加えてバック トレースを提供してもらえると開発者が問題の箇所を突き止めるのに非 常に役立ちます。もしあなたがPHPをApacheモジュールとして使用して いる場合は以下のようにします:
httpdを停止します
run -X -f /path/to/httpd.conf
ブラウザから問題のあるURLにアクセスします
もしコアダンプが発生するとgdbが知らせてくれます
bt とタイプします
このバックトレースをバグレポートに含めてください。バグレポートは http://bugs.php.net/ から送信してください。
もしそのスクリプトが正規表現関数を使用している場合 (ereg() やその類似関数)、PHPとApacheが同じ正規表現の パッケージを使用してコンパイルされているかどうかを確認してください。 PHPとApache 1.3.xを使用している場合は常に確認が必要です。
3. Unix: RPMを使ってPHPをインストールしたのですが、ApacheがPHPのページを 処理してくれません。何が起こっているのですか?
あなたがApacheとPHPの両方をRPMでインストールしたとすると、いかに示す 内容の一部もしくは全てを httpd.conf ファイルに追加 するか、コメントを外す必要があります:
4. Unix: PHP 3をRPMを使ってインストールしたのですが、そのRPMは私が必 要なデータベースサポートなしでコンパイルされたものでした。どうす ればよいですか?
PHP 3のビルド方法の制約により、どの環境にも対応できる柔軟なPHPの RPMを作成するのは困難です。この問題に関してはPHP 4で取り組んでい ます。PHP 3ではとりあえずPHPディストリビューションの INSTALL.REDHATファイルで説明されている方法を用いることをお勧めし ます。もしどうしてもRPMバージョンのPHP 3を使う、という場合は続き をお読みください。
RPMのパッケージャはインストール処理を単純化するため、 そして 標準の/usr/local/ディレクトリではなく/usr/を使 用するためにデータベースサポート無しのRPMを作成しています。デー タベースサポートを追加するにはRPM specファイルにサポートするデー タベースの種類と最上位ディレクトリを指定する必要があります。
以下の例は広く使われているMySQLデータベースサポートを追加して Apacheモジュールをインストールする場合について説明しています。
もちろん以下の全ての情報はPHPがサポートするいずれのデータベース の場合でも対象箇所を適宜変更すれば対応可能です。この場合はMySQL とApache共にRPMのみを使ってインストールしたものと仮定しています。
まずmod_php3を削除します:
ソースRPMを手に入れてインストールします。--rebuildではありません。
/usr/src/redhat/SPECS/mod_php3.spec を編集します
%buildセクションに追加するデータベースサポートとそのパスを記述します。
MySQLの場合は以下のようになります。
変更が終了したら以下のようにしてバイナリRPMを構築します:
インストールします。
5. Unix: ApacheにFrontPageエクステンションのパッチを当てたら、突然 PHPが動作しなくなってしまいました。PHPはApacheのFrontPageエクス テンションと共存することはできないのですか?
いいえ。PHPはFrontPageエクステンションと問題なく共存できます。問 題はFrontPageエクステンションのパッチがPHPが依存しているApacheの 構造の一部を変更してしまうことにあります。パッチを当てた後でPHP を再コンパイル('make clean; make'として下さい)すれば問題は解決さ れます。
6. Unix/Windows: PHPをインストールしたのですがブラウザからPHPスクリ プトにアクセスしても何も表示されません。
ブラウザの「ソースの表示」を実行してください。おそらくPHPのソー スコードが表示されると思います。これはウェブサーバがスクリプトを PHPに渡していないためスクリプトが実行されていない、ということを 意味します。サーバ側の設定のどこかが間違っているはずですので、 PHPインストールマニュアルに従って再度入念に設定を確認してみてく ださい。
7. Unix/Windows: PHPをインストールしたのですがブラウザからPHPスクリ プトにアクセスするとInternal Server Error 500となってしまいます。
ウェブサーバがPHPを実行するときに何らかの問題が起きています。ど んなエラーが起こっているか確認するために、コマンドラインでPHP実 行ファイル(Windowsでは php.exe )のあるディレ クトリに移動して php -i を実行して下さい。もし PHPの実行時に問題があった場合は適切なエラーメッセージが表示され るのでそれを手がかりに次に何をすべきかを知ることができます。画面 一杯にHTML( phpinfo() 関数の出力)が表示された場 合にはPHPは問題なく動作していますので、問題はウェブサーバの設定 にあるはずです。再度入念にチェックしてみて下さい。
8. PHPをインストールするまではエラーもなく問題なく進んだのですが、 apacheを起動させようとするとundefined symbolエラーが発生します:
これは、PHPとは関係なくMySQLクライアントライブラリの問題です。 このライブラリのうちある種のものは --with-zlib を必要とし、 他のものは必要としません。こ問題はMySQL FAQでも扱われています。
9. Windows: PHPをインストールしたのですがブラウザからPHPスクリプト にアクセスすると次のようなエラーが出力されます:
このエラーメッセージはPHPが(何らかの理由で)何も出力できなかった ことを意味します。詳細なエラーメッセージを得るためにはコマンドラ インから、PHP実行ファイル(Windowsでは php.exe )のあるディレクトリに移動して php -i を実行して下さい。もしPHPの実行時に問題 があった場合は適切なエラーメッセージが表示されるのでそれを手がか りに次に何をすべきかを知ることができます。画面一杯に HTML( phpinfo() 関数の出力)が表示された場合には PHPは問題なく動作しています。
PHPがコマンドラインで動作したなら、再度ブラウザからPHPスクリプト にアクセスしてみて下さい。もしまだ失敗するようなら以下のいずれか の理由によるものと思われます。
PHPスクリプト, php.exe, php4ts.dll, php.ini もしくはロードしようとしているPHPエクステンションの ファイルパーミッションが匿名インターネットユーザ IUSER_ machinename にアクセスできな いものになっている。
スクリプトが存在しない(もしくはあなたが在ると思っている場所と ウェブサーバのルートディレクトリからの相対位置がずれている)。 IISを使用している場合は、Internet Service Managerでスクリプト マッピングを設定するときに「ファイルの存在を確認する」にチェッ クをすることでこのエラーをトラップすることができます。もしスク リプトファイルが存在しない場合はサーバが代わりに404エラーを返 すようになります。これにはもう一つ利点があります。それはIISが スクリプトファイルのNTLanManパーミッションに応じて認証を要求す るようになる、ということです。
10. Windows: 全ての説明に従っているのにPHPがIISで動作しません!
PHPスクリプトを実行しようとするあらゆるユーザが php.exe の実行権限を必要としているということを忘 れないでください。IISはインストール時に追加された匿名ユーザを使用し ます。このユーザに対して php.exe の実行権限が必要 です。また、認証された全てのユーザに関しても php.exe の実行権限が必要です。IIS4の場合はさらに PHPがスクリプトエンジンであるということを教えてやる必要があります。