このセクションでは PHP のインストール方法に関する一般的な質問を扱います。 PHP は、ほとんど全ての OS とウェブサーバーで 利用可能です。
PHP をインストールするには、インストールと設定 の指示に従ってください。
PHP はグルー(糊)です。このグルーは、多くのサードパーティ製のライブラリを くっつけることによりクールな Web アプリケーションを構築するために使用され、 直観的で簡単に習得できる言語インターフェイスにより、一つの整合性のある実体として 見せることができます。 PHP の柔軟性と力は、プラットフォームの安定性と堅牢性に基づいています。 グルーによる結合をするためには、OS や Web サーバー、サードパーティ製のライブラリが必要です。 これらの一つの機能が停止した場合、PHP は問題を特定し、速やかに修正する 手段が必要です。 実行スレッドを完全に分離しなかったり、 メモリセグメントを完全に分離しなかったり、 各リクエストで使用される強力なサンドボックスを有さないことで、 基本的なフレームワークをより複雑なものにした場合、 PHP のシステムに弱点が生まれます。
マルチスレッド MPM を使いたい場合は、 PHP が自分のメモリ空間で実行される FastCGI の設定をみてください。
UNIX の場合、デフォルトでは /usr/local/lib です。コンパイル時に --with-config-file-path オプションを使用してこの場所を変えたいという人も多いでしょう。 例えばこのようにすることも出来ます:
--with-config-file-path=/etc
--with-config-file-scan-dir=PATH
Windows の場合、php.ini のデフォルトパスは Windows ディレクトリになります。 Apache ウェブサーバーを使っている場合はまず Apache がインストールされているディレクトリ (例えば c:\program files\apache group\apache にある php.ini を探そうとします。このため、異なる php.ini ファイルを異なるバージョンの Apache ごとに置いておくことができます。
設定ファイルの章も参照してください。
これはおそらく 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 とタイプします
このバックトレースをバグレポートに含めてください。バグレポートは » https://github.com/php/php-src/issues から送信してください。
もしそのスクリプトが正規表現関数 (preg_match() やその類似関数) を使用している場合、 PHP と Apache が同じ正規表現のパッケージを使用してコンパイルされているかどうかを確認してください。 PHP と Apache 1.3.x を使用している場合は常に確認が必要です。
あなたが Apache と PHP の両方を RPM でインストールしたとすると、以下に示す 内容の一部もしくは全てを httpd.conf ファイルに追加するか、コメントを 外す必要があります:
# Extra Modules AddModule mod_php.c AddModule mod_perl.c # Extra Modules LoadModule php_module modules/mod_php.so LoadModule php5_module modules/libphp5.so LoadModule perl_module modules/libperl.so
AddType application/x-httpd-php .php
いいえ。PHP は FrontPage エクステンションと問題なく共存できます。 問題は FrontPage エクステンションのパッチが PHP が依存している Apache の 構造の一部を変更してしまうことにあります。パッチを当てた後で PHP を再コンパイル('make clean; make' としてください)すれば問題は 解決されます。
ブラウザの「ソースの表示」を実行してください。おそらく PHP の ソースコードが表示されると思います。これはウェブサーバーがスクリプトを PHP に渡していないためスクリプトが実行されていない、ということを 意味します。サーバー側の設定のどこかが間違っているはずですので、 PHP インストールマニュアルに従って再度入念に設定を確認してみてください。
ウェブサーバーが PHP を実行するときに何らかの問題が起きています。
どんなエラーが起こっているか確認するために、コマンドラインで PHP
実行ファイル(Windows では php.exe) のある
ディレクトリに移動して php -i
を実行してください。
もし PHP の実行時に問題があった場合は適切なエラーメッセージが表示されるので、
それを手がかりに次に何をすべきかを知ることができます。画面
一杯に HTML(phpinfo() 関数の出力)が表示された場合には
PHP は問題なく動作していますので、問題はウェブサーバーの設定
にあるはずです。再度入念にチェックしてみてください。
[mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
これは、PHP とは関係なく MySQL クライアントライブラリの問題です。 このライブラリのうちある種のものは --with-zlib を指定する必要がありますが、 他のものは必要ありません。この問題は MySQL FAQ でも扱われています。
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 スクリプトに アクセスしてみてください。もしまだ失敗するようなら以下のいずれかの 理由によるものと思われます。
IUSER_<machinename>
にアクセスできない
ものになっている。
PHP スクリプトを実行しようとするあらゆるユーザーが php.exe の実行権限を必要としているということを 忘れないでください。IIS はインストール時に追加された匿名ユーザーを使用 します。このユーザーに対して php.exe の実行権限が 必要です。また、認証された全てのユーザーに関しても php.exe の実行権限が必要です。IIS4 の場合はさらに PHP がスクリプトエンジンであるということを教えてやる必要があります。 この FAQ も読んでください。
Security Alert! PHP CGI
cannot be accessed directly.
cgi.force_redirect
に 0
をセットしてください。デフォルトでは
1
にセットされていますので、そのディレクティブが
;
でコメントアウトされていないことを確認してください。
他のディレクティブと同様にこれは php.ini 上でセットされます。
デフォルトは 1
なので、100% 正しく php.ini ファイルが
読み込まれているかどうかが重要です。
詳細はこの FAQ を
読んでください。
php.ini とそれが PHP に読み込まれているかを確認するには
phpinfo() をコールして最初のほうに
表示されている Configuration File (php.ini)
を見てください。これは PHP が認識している php.ini と、それが
読み込まれているか否かを示しています。ディレクトリパスだけが
表示されている場合は、読み込まれていないということなので、
そのディレクトリに php.ini を置いてください。
php.ini が PATH にある場合それが読み込まれます。
php.ini が読み込まれていてかつ PHP をモジュールとして実行 している場合、php.ini を変更した後で必ず Web サーバーを 再起動してください。
php_ini_loaded_file() も参照ください。
Windows では、以下のようにします。
コントロールパネルのシステムアイコンを選択します(スタート → コントロールパネル)。
詳細設定タブに移動します。
「環境変数」ボタンを押します。
「システム環境変数」欄を見ます。
Path というエントリを見つけます(スクロールする必要があるかもしれません)。
Path のエントリをダブルクリックします。
その最後に ';' と追加し、その後に PHP のディレクトリを追加します
(例: ;C:\php
)。
OK を押します。
注意: 上の作業を行った後は、必ずコンピュータを再起動し、 PATH の変更が適用されていることを確認しましょう。
いくつかの方法があります。Apache を使用しているのなら、 Apache のドキュメントを参照して下さい。 それ以外の場合は、環境変数 PHPRC を指定する 必要があります。
もしリンクする PHP ファイルが拡張子を持っているなら、すべては
うまく動作します。この FAQ が対象としているのは、リンクする
PHP ファイルが拡張子を持っておらず、拡張子のない URL から PHP
ファイルを判別するためにコンテントネゴシエーションを使用する方法です。
この場合、AddType application/x-httpd-php
.php
という行を以下のように変更します。
AddHandler php5-script php AddType text/html php
php-script
をキャッチできないからです。
いいえ、それ以外のいかなるメソッド(例: CONNECT)でも扱えます。 適切な応答ステータスは、header() を使用して送信可能です。 GET および POST だけを処理したいなら、Apache の設定を以下のようにします。
<LimitExcept GET POST> Deny from all </LimitExcept>