PHP マニュアル
前のページ |  | 次のページ

# 第 50章インストール

このセクションでは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で動作しません！
11. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get the following error: Security Alert! PHP CGI cannot be accessed directly.. IIS, PWS, OmniHTTPD, Xitami上でCGIとしてPHPを実行するとき、 次のようなエラーが出る:Security Alert! PHP CGI cannot be accessed directly.
12. `php.ini` が認識され読み込まれていることをどうやって知ることが できますか？ 自分の行った変更が反映されてないらしいのですが。

1. Unix/Windows: php.iniファイルはどこに置けばよいのですか？

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ごとに置いておくことができます。

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

2. Unix: PHPをインストールしましたが、ファイルをロードするたびに 'Document Contains No Data(ページが表示できません)'というメッ セージが表示されます。何が起こっているのですか？

これはおそらくPHPに何らかの問題が起こっていてコアダンプしている という状態です。サーバのエラーログを見てこのケースかどうかチェッ クしてください。そして小さなテストケースで問題を再現させてみてく ださい。もし'gdb'の使い方が分かるならバグレポートに加えてバック トレースを提供してもらえると開発者が問題の箇所を突き止めるのに非 常に役立ちます。もしあなたがPHPをApacheモジュールとして使用して いる場合は以下のようにします：

- httpdを停止します

- gdb httpd

- Stop your httpd processes

- > run -X -f /path/to/httpd.conf

- ブラウザから問題のあるURLにアクセスします

- > run -X -f /path/to/httpd.conf

- もしコアダンプが発生すると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`ファイルに追加 するか、コメントを外す必要があります：

    # Extra Modules
    AddModule mod_php.c
    AddModule mod_php3.c
    AddModule mod_perl.c

    # Extra Modules
    LoadModule php_module         modules/mod_php.so
    LoadModule php3_module        modules/libphp3.so     /* for PHP 3 */
    LoadModule php4_module        modules/libphp4.so     /* for PHP 4 */
    LoadModule perl_module        modules/libperl.so

そして以下の行：

    AddType application/x-httpd-php3 .php3    /* for PHP 3 */
    AddType application/x-httpd-php .php      /* for PHP 4 */

以上の内容を全体設定、もしくはPHPサポートを追加したいバーチャル ドメインの設定に加えてください。

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 -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`ファイルにしたがった方がおそ らくずっと簡単である、ということも忘れないでください。

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エラーが発生します:

    [mybox:user /src/php4] root# apachectl configtest
     apachectl: /usr/local/apache/bin/httpd Undefined symbols:
      _compress
      _uncompress

これは、PHPとは関係なくMySQLクライアントライブラリの問題です。 このライブラリのうちある種のものは --with-zlib を必要とし、 他のものは必要としません。こ問題はMySQL FAQでも扱われています。

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:

このエラーメッセージは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がスクリプトエンジンであるということを教えてやる必要があります。 このFAQも 読んで下さい。

11. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get the following error: Security Alert! PHP CGI cannot be accessed directly.. IIS, PWS, OmniHTTPD, Xitami上でCGIとしてPHPを実行するとき、 次のようなエラーが出る:Security Alert! PHP CGI cannot be accessed directly.

cgi.force_redirect に0をセットしてください。デフォルトでは 1にセットされていますので、そのディレクティブ が;でコメントアウトされていないことを確認してください。 他のディレクティブと同様にこれは `php.ini` 上でセットされます。

デフォルトは1なので、100%正しく`php.ini`ファイルが 読み込まれているかどうかが重要です。 詳細はこのFAQを 読んで下さい。

12. `php.ini` が認識され読み込まれていることをどうやって知ることが できますか？ 自分の行った変更が反映されてないらしいのですが。

`php.ini`とそれがPHPに読み込まれているかを確認するには phpinfo()をコールして最初のほうに 表示されているConfiguration File (php.ini) を見てください。これはPHPが認識している`php.ini` と、それが 読み込まれているか否かを示しています。ディレクトリパスだけが 表示されている場合は、読み込まれていないということなので、 そのディレクトリに`php.ini`を置いてください。 `php.ini`がPATHにある場合それが読み込まれます。

`php.ini`が読み込まれていてかつPHPをモジュールとして実行 している場合、`php.ini`を変更した後で必ずWebサーバを 再起動してください。

前のページ | ホーム | 次のページ
データベースに関する問題 | 上に戻る | 構築時の問題