第 48 章 インストール

このセクションではPHPのインストール方法に関する一般的な質問扱います。 PHPは(OSX以前のMacOSを除けば)ほとんど全てのOSと、ウェブサーバで利用 可能です。

PHPをインストールには、ディストリビューションに含まれる INSTALL ファイルの説明に従っ てください。ウィンドウズユーザの場合は加えて install.txt ファイルも読む必要 があります。またウィンドウズユーザのための役立つヒントが ここ にあります。

1. Unix/Windows: php.iniファイルはどこに置けばよいのですか?
2. Unix: PHPをインストールしましたが、ファイルをロードするたびに 'Document Contains No Data(ページが表示できません)'というメッ セージが表示されます。何が起こっているのですか?
3. Unix: RPMを使ってPHPをインストールしたのですが、ApacheがPHPのページを 処理してくれません。何が起こっているのですか?
4. Unix: PHP 3をRPMを使ってインストールしたのですが、そのRPMは私が必 要なデータベースサポートなしでコンパイルされたものでした。どうす ればよいですか?
5. Unix: ApacheにFrontPageエクステンションのパッチを当てたら、突然 PHPが動作しなくなってしまいました。PHPはApacheのFrontPageエクス テンションと共存することはできないのですか?
6. Unix/Windows: PHPをインストールしたのですがブラウザからPHPスクリ プトにアクセスしても何も表示されません。
7. Unix/Windows: PHPをインストールしたのですがブラウザからPHPスクリ プトにアクセスするとInternal Server Error 500となってしまいます。
8. PHPをインストールするまではエラーもなく問題なく進んだのですが、 apacheを起動させようとするとundefined symbolエラーが発生します:
[mybox:user /src/php4] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress
9. Windows: PHPをインストールしたのですがブラウザからPHPスクリプト にアクセスすると次のようなエラーが出力されます:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:
10. Windows: 全ての説明に従っているのにPHPがIISで動作しません!

UNIXの場合、デフォルトでは /usr/local/lib です。コンパイル時に --with-config-file-path オプションを使用してこの場所を変えたいという人も多いでしょう。 例えばこのようにすることも出来ます:

--with-config-file-path=/etc
そしてディストリビューションの php.ini-dist/etc/php.ini にコピーして環境に合うように 編集してください。

ウィンドウズの場合、 php.ini のデフォルトパスはWindowsディレクトリになります。 Apacheウェブサーバを使っている場合はまずApacheがインストールされているディレクトリ (例えば c:\program files\apache group\apache にある php.ini を探そうとします。このため、異なる php.ini ファイルを異なるバージョンの Apacheごとに置いておくことができます。

設定ファイル の章も参照してください。

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 -e mod_php3
    


  • ソースRPMを手に入れてインストールします。--rebuildではありません。

    rpm -Uvh mod_php3-3.0.5-2.src.rpm
    


  • /usr/src/redhat/SPECS/mod_php3.spec を編集します

    %buildセクションに追加するデータベースサポートとそのパスを記述します。

    MySQLの場合は以下のようになります。

    --with-mysql=/usr \
    
    %buildセクションは例えば以下のようになるでしょう
    ./configure --prefix=/usr \
     --with-apxs=/usr/sbin/apxs \
     --with-config-file-path=/usr/lib \
     --enable-debug=no \
     --enable-safe-mode \
     --with-exec-dir=/usr/bin \
     --with-mysql=/usr \
     --with-system-regex
    


  • 変更が終了したら以下のようにしてバイナリRPMを構築します:

    rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
    


  • インストールします。

    rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
    


Apacheを再起動するのを忘れないでください。そうすればPHP 3には MySQLサポートが追加されているはずです。ただ、ディストリビューショ ンのtarファイルから構築してそこに含まれる INSTALL.REDHAT ファイルにしたがった方がおそ らくずっと簡単である、ということも忘れないでください。

このエラーメッセージは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パーミッションに応じて認証を要求す るようになる、ということです。