html/ 0040755 0001012 0001012 00000000000 11277243701 013022 5 ustar docbuilder docbuilder html/copyright.html 0100644 0001012 0001012 00000004517 11277243141 015722 0 ustar docbuilder docbuilder
Copyright © 1997 - 2009 by the PHP Documentation Group. この著作物は、Creative Commons Attribution 3.0 か それ以降で指定された条件と制約に従う限り配布することができます。 Creative Commons Attribution 3.0 license のコピーは本マニュアルとともに配布されており、 ライセンスの最新版は現在のところ、 » http://creativecommons.org/licenses/by/3.0/ で入手可能です。
修正の有無に関わらず本文書の全体または一部を再配布または再出版したい場合や、 質問がある場合には、 » doc-license@lists.php.net 宛で著作権者まで連絡をしてください。 このアドレスは、一般にアーカイブが公開されているメーリングリストへマップされていることに 注意して下さい。
(訳注)本日本語訳の記述内容により生じたいかなる損害についても 著作権所有者および翻訳者は責任を負いません。
PHP は、"PHP: Hypertext Preprocessor" を意味し、広く使用されているオープンソースの汎用スクリプト言語です。 HTML に埋め込むことができ、Web アプリケーションの開発に特に適しています。 PHP の構文の多くは C、Java、Perl 言語から転用したもので、 簡単に習得することができます。この言語は、動的に生成されるウェブページを Web 開発者が速やかに作成できるようにすることを主な目標として つくられました。しかし、それだけにとどまらず、 もっと多くのことを PHP を使って行うことができます。
このマニュアルは、 関数リファレンス を中心として、言語リファレンス、 PHP の主な機能、 そして、その他の 付録 から構成されています。
本マニュアルを様々な形式で » http://www.php.net/download-docs.php からダウンロードすることが出来ます。 このマニュアルがどのように作成されているか、といった詳細な情報は 付録の 本マニュアルについて にあります。 PHP の歴史 に興味がある場合は、 関連する付録も参照して下さい。
我々は、現在最も活動的な人々をこのマニュアルの先頭に掲げています。 しかし、他にも多くの我々の活動を支援してくれる人がおり、 また、過去にこのプロジェクトを支援してくれた人がいます。 マニュアルのユーザ注記により支援してくれた名前がわからない人々がいますが、 彼らの支援は非常に有益です。以下に掲げたリストはアルファベット順です。
以下の方々は本マニュアルに ついてコンテンツを提供したことで大きな貢献をしています。 Bill Abt, Jouni Ahto, Alexander Aulbach, Daniel Beckham, Stig Bakken, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Stanislav Malyshev, Rafael Martinez, Rick McGuire, Yasuo Ohgaki, Derick Rethans, Rob Richards, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Masahiro Takagi, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar そして Andrei Zmievski.
以下の方々は本マニュアルについて多くの編集作業を行ったことで大きな貢献を しています。 Stig Bakken, Gabor Hojtsy, Hartmut Holzgraefe そして Egon Schmid.
現在最もアクティブな管理者。 Daniel Brown, Nuno Lopes, Felipe Pena, Thiago Pojda そして Maciek Sokolewicz.
以下の方々もユーザ注記の管理に注力してくれました。 Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Etienne Kneuss, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Hannes Magnusson, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles そして Jeroen van Wolffelaar.
本マニュアルの日本語への翻訳は、PHP マニュアル翻訳プロジェクトにて行われています。 主な翻訳者は、以下の通りです(名前のアルファベット順)。
Chihiro Higuchi, Haruki Setoyama, Hideyuki Shimooka, Kazuhiro Ogura, Machino Satoshi, Masaharu Iwai, Masahiro Takagi, Masaki Fujimoto, Michihide Hotta, Moriyoshi Koizumi, Rui Hirokawa, Shigeru Kanemoto, Tadashi Jokagi, Yasuo Ohgaki, Yu Watanabe, Yusuke Hata.
PHP (PHP: Hypertext Preprocessor を再帰的に略したものです) は、広く使われているオープンソースの汎用スクリプト言語です。 PHP は、特に Web 開発に適しており、HTML に埋め込むことができます。
で、結局のところどういう意味なのでしょう? 以下に例を示します。
例1 初歩的な例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Example</title>
</head>
<body>
<?php
echo "Hi, I'm a PHP script!";
?>
</body>
</html>
HTMLを出力するために多くのコマンドを記述する (C や Perl のように)
代わりに、PHP のページは "何か"
(この例では、"Hi, I'm a PHP script!" と出力)
を行うコードを HTML に埋め込むことになります。
PHP のコードは特別な 開始および終了の処理命令
<?php と ?>
で囲まれており、これによって "PHP モード" の切り替えを行います。
PHP がクライアントサイド JavaScript のようなものと異なっている点は、 コードがサーバーで実行され、その結果がクライアントに送信されるということです。 クライアントは、スクリプトを実行した結果を受け取りますが、 その出力を作成したコードがどんなものなのかを知ることはできません。 全てのHTMLファイルをPHPで処理するようにWebサーバー を設定することさえ可能で、この場合、ユーザーが袖の内に何があるかを 見分けることは不可能になることでしょう。
PHPを使用する上で最も優れている点は、初心者に対しては非常に分かり 易いと同時に、プロフェッショナルのプログラマに対しては多くの進んだ 機能を提供している点です。PHPの機能を羅列した長い一覧表を読まなけ ればならないのかと心配する必要はありません。PHPはすぐに始められま すし、数時間の内に簡単なスクリプトが書けるようになります。
PHPを使用した開発ではサーバサイドでの動作に焦点が当てられますが、 他にも多くのことが可能です。 PHPにできることは?まで読み進めてみてください。 Webプログラミングのみに関心がある場合には、 簡易チュートリアルに進んでください。
あらゆることができます。PHPでは主にサーバサイドでの活用に焦点が 当てられているため、フォームからデータを取得したり、動的にページ の内容を生成したり、クッキーを送信・受信するといった他のCGI プログラムに出来ることは全て行うことが出来ます。しかし、これが 全てではありません。
PHPスクリプトが使用される場所は主に3つあります。
PHPは Linux, 多くのUnix系システム(HP-UX, Solaris, OpenBSD等), Microsoft Windows, Mac OS X, RISC OS, その他全ての有名なOSで 動作します。PHPはまた現在使用されているほとんど全てのウェブサーバを サポートします。これには、Apache, Microsoft Internet Information Server, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd等 が含まれます。そうしたウェブサーバの大部分に対してPHPはモジュールを 提供し、その他のものに対してはCGIが提供されます。
つまりPHPを使用する場合にはOSとウェブサーバを自由に選ぶことが出来ます。 さらに手続き型のプログラミングかオブジェクト指向のプログラミングか、 もしくはそれらを混在させるかといった選択を行うこともできます。 現在のバージョンのPHPでは標準的なOOPの機能が全て実現されている 訳ではありませんが、(PEARライブラリを含め)多くのコードライブラリ や大きなアプリケーションがOOPのみを使用して書かれています。
PHPはHTMLを出力するだけではありません。PHPはイメージやPDFファイル、 そして(libswfやMingを使って)Flashムービーまでもをその場で生成する 機能を備えています。またXHTMLやXMLといったその他の文書も自動的に 生成することが出来ますし、ファイルシステムに保存したり、印刷したり サーバ側でキャッシュすることも出来ます。
PHP の機能の中で最も強力で優れた機能は、広範なデータベースをサポー トしていることでしょう。データベース機能を用いたWebページの作成は、 非常に簡単です。以下のデータベースが現在サポートされています。
また、データベース抽象化モジュールもあります (PDO といいます)。これは、 このモジュールでサポートされているデータベースに透過的にアクセスする機能を提供します。 加えて、PHP は ODBC (Open Datebase Connection) をサポートするので、 この世界標準の機構をサポートするどんなデータベースにもアクセスすることが出来ます。
- Adabas D
- dBase
- Empress
- FilePro (読込みのみ)
- Hyperwave
- IBM DB2
- Informix
- Ingres
- InterBase
- FrontBase
- mSQL
- Direct MS-SQL
- MySQL
- ODBC
- Oracle (OCI7 および OCI8)
- Ovrimos
- PostgreSQL
- SQLite
- Solid
- Sybase
- Velocis
- Unix dbm
PHP は、IMAP、SNMP、NNTP、POP3、HTTP、COM (Windowsのみ) やその他 数え切れない程多くのプロトコルを用いる他のサービスの状態を追跡する 機能もサポートしています。低レベルのネットワークソケットをオープンし、 他のプロトコルを用いて通信を行うことも可能です。また、PHPはWDDXを サポートし、基本的に全てのウェブプログラミング言語間で複雑なデータ交換 を行うことができます。相互接続機能としては、他にJavaオブジェクトの インスタンスを作成してそれをPHPのオブジェクトとして透過的にアクセス する機能や、CORBA拡張モジュールを使用してリモートオブジェクトにアクセス する機能があります。
PHPにはPOSIX拡張正規表現もしくはPerl正規表現からXML文書の解析に至るまで 非常に便利なテキスト処理の機能があります。XML文書の解析や操作のために SAXとDOMをサポートしています。XML文書の変換にはXSLT拡張モジュールを 使用することが出来ます。
他にも多くの興味深い拡張モジュールがあります。mnoGoSearch サーチエンジン関数、IRC ゲートウェイ関数、多くの圧縮ユーティリティ (gzip, bz2, zip)、カレンダー関数、翻訳関数などなど……。
お分かりの通り、このページではPHPの機能やPHPを使用することの利点を全て 紹介することは出来ません。PHPのインストール の章を読んでみてください。紹介された拡張モジュールに関しては関数リファレンスを読んでみてください。
本チュートリアルでは、使用するサーバで PHP が使用可能であり、 .php で終わる全てのファイルが PHP で処理されることを仮定します。多くのサーバでは、PHP ファイルに関してこれがデフォルトの拡張子ですが、 確実なのはサーバの管理者にきいてみることです。サーバが PHP をサポートする場合、何もする必要はありません。 .php ファイルを 作成して Web ディレクトリに置くだけで、 サーバがこれを自動的にパースしてくれます。 何もコンパイルする必要はなく、他のツールをインストールする必要もありません。 PHP のファイルは、あなたが行なう全ての処理を実装した特殊なタグを通常の HTML ファイルに追加したものと考えると良いでしょう。 ほとんどの Web ホストは PHP サポートを提供していますが、 使用しているホストがサポートしていない場合、 » PHP リンク集のセクションで PHP が利用可能な Web ホストを探すためのリソースを読んでみてください。
ここでは、貴重なネットワーク帯域を節約するために、 ローカルに開発を行うことにしましょう。この場合、 » Apache のような Web サーバと、 当然、» PHP をインストールすることになります。また、多くの場合には、 » MySQL のようなデータベースもインストールすることになるでしょう。
これらは個別にインストールすることもできますし、 より簡単な方法でインストールすることも可能です。 このマニュアルには、 PHP のインストール手順 (Web サーバが設定済みであると仮定しています) があります。 PHP 自体をインストールする際に問題が発生した場合、 » インストールに関する メーリングリストで質問することをお薦めします。 より簡単にインストールを行いたい場合には、 使用するオペレーティングシステム用の » 設定済みのパッケージ を利用することもできます。これにより、 数回のマウスクリックで自動的にこれらをインストールすることができます。 MacOSX、Linux や Windows を含む、あらゆるオペレーティングシステムにおいて Web サーバで PHP を使用できるように設定することは簡単です。 Linux の場合、RPM の場所を知るために » rpmfind と » PBone が有用でしょう。 Debian 用パッケージをみつけるには、» apt-get にアクセスするとよいでしょう。
以下の内容で hello.php という名前のファイルを作成し、Web サーバのルートディレクトリ (DOCUMENT_ROOT) に置いてください。
例1 初めての PHP スクリプト: hello.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
ブラウザを使用して、/hello.php で終わる Web アクセス用 URL を指定し、 このファイルにアクセスしてください。 ローカルに開発を行っている場合、この URL は http://localhost/hello.php または http://127.0.0.1/hello.php のようになります。 しかし、これは Web サーバの設定に依存します。 全てが正しく設定されている場合、 このファイルは PHP によりパースされ、以下の出力がブラウザに送信されます。
<html> <head> <title>PHP Test</title> </head> <body> Hello World<p> </body> </html>
このプログラムは非常に簡単なので、実際には、このようなページを 作成するために PHP を使用する必要はありません。 Hello World を PHP の echo() 命令により出力しているだけです。 このファイルは、実行ファイルまたは特殊なファイルとする必要がないことに注意してください。 このファイルが拡張子 ".php" を有し、このファイルが PHP に渡される必要があると設定されているため、サーバは PHP により解釈されるファイルを見付けることができます。 このファイルは、多くの面白いことを可能にする特別なタグを利用できる、 通常の HTML ファイルと考えることができます。
この例を試しても何も出力されない場合、または、 ダウンロード用のプロンプトが表示されるか、 テキストとしてファイル全体が表示された場合、 利用しているサーバで PHP が利用できない可能性があります。本マニュアルの インストール の章により PHP を利用できるようにするよう管理者にきいてみてください。 ローカルに開発を行っている場合も、 インストールの章を読んで設定が全て正しく行われていることを確認してください。 解決しない問題がある場合は、多くの » PHP サポート の選択肢のどれかを利用してみてください。
この例の目的は、特殊な PHP タグ形式を示すことです。 この例では、<?php が PHP タグの開始を示しています。この後、PHP 命令を置き、終了タグ ?> を記述することにより、PHP モードを抜けています。 このように任意の場所で PHP モードを抜けて HTML ファイルに移ることができます。詳細は、 基本的な構文のセクションを参照ください。
注意: 改行に関する注意
HTML においては改行にはほとんど意味がありません。ただ、 HTML の見栄えをよくするためにも適宜改行を入れておくとよいでしょう。 ?> の直後の改行は、PHP によって取り除かれます。 複数の PHP ブロックを使用している場合や、 何かを出力するのかどうかがわからないファイルを include する際などに、 この挙動は非常に便利です。と同時に少々混乱するかもしれません。 強制的に改行させるには、?> の後に空白を置くか、 あるいは PHP ブロック内の最後の echo/print で明示的に改行を出力します。
注意: テキストエディタに関する注意
PHP ファイルを作成、編集、監理する際に使用できる、 多くのテキストエディタや統合開発環境 (IDE) があります。 これらのツールのリストの一部は、» PHP エディタのリスト で整理されています。あるエディタを推薦したい場合、上記のページを訪れ、 ページの監理者にそのエディタをリストに加えてくれないかとたずねてみてください。
注意: ワードプロセッサに関する注意
StarOffice Writer, Microsoft Word および Abiword のようなワードプロセッサは、PHP ファイルの編集には向いていません。 これらのワープロ上でテストスクリプトを編集する場合は、 ファイルをプレーンテキストとして保存していることを確認してください。 さもないと、PHP はスクリプトを読み込んで実行できません。
注意: Windows のメモ帳に関する注意
Windows のメモ帳を使用して PHP スクリプトを書く場合には、ファイルに 拡張子 .php を付けて保存したかどうかを確認する必要があります (メモ帳は、以下の防止策のどらかを適用しない限り、拡張子 .txt を自動的に付加します)。ファイルを保存する際に、 ファイル名を入力するプロンプトでファイル名を引用符で括ります (すなわち、"hello.php" とします)。 もしくは、保存ダイアログボックスにおいてドロップダウンメニュー "テキスト文書"をクリックし、"すべてのファイル" に設定を変更します。 これにより、引用符を付けずにファイル名を入力することができます。
さて、動作する簡単な PHP スクリプトを作成することができましたので、 最も有名な PHP スクリプトを作成してみましょう! phpinfo() 関数をコールすることにより、 定義済み変数、 ロードされている PHP モジュール、設定 等のシステムに関する多くの有用な情報を得ることができます。 この重要な情報を見てみてください。
例2 PHP からシステムに関する情報を取得する
<?php phpinfo(); ?>
次に、より実用的なことをしてみましょう。 ページを見ているユーザが使用しているブラウザの種類を確認してみます。 これを行なうには、ブラウザが HTTP リクエストの一部として送信した user agent 文字列を調べます。 この情報は、変数 に保存されています。PHP では、変数名は常にドル記号で始まります。 ここで使用する変数は、$_SERVER['HTTP_USER_AGENT'] です。
注意: $_SERVER は、 Web サーバ関連情報を全て保持する PHP の特別な予約変数です。詳細は、 スーパーグローバル を参照してください。 これらの特別な変数は、» 4.1.0 で導入されました。これ以前は、 $HTTP_SERVER_VARS のような古い配列 $HTTP_*_VARS を代わりに使用していました。 古いとはいえ、これらの変数はまだ存在しています (古いコードに関する注記も 参照してください)。
この変数を表示するには、以下のようにします。
例1 変数を出力する (配列要素)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
このスクリプトの出力例は以下のようになります。
PHP で利用可能な変数の型 には多くの種類があります。上の例では、 配列 の要素を出力しています。配列は、非常に有用です。
$_SERVER は、PHP で自動的に利用可能な変数のひとつに過ぎません。マニュアルの 定義済の変数 のセクションでリストを参照することができます。 あるいは、完全なリストを取得するには、さきほどのセクションで使用した phpinfo() 関数の出力を確認します。
PHP タグの中に複数の PHP 命令を置くことができ、echo 文以上のことを行なうコードブロックを作成することができます。 例えば、インターネット・エクスプローラかどうかを調べたい場合は、 以下のようにします。
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
echo 'あなたはInternet Explorerを使用しています<br />';
}
?>
このスクリプトの出力例は以下のようになります。
あなたはInternet Explorerを使用しています<br />
ここで、新しい概念をいくつか導入します。 if 文を使用しています。 C 言語の基本構文を知っているとしたら、理解できると思います。 C 言語や上記の構文を使用する他の言語をあまり知らない場合には、 PHP の入門書を手にとって最初の数章を読むか、このマニュアルの 言語リファレンスの部分を読むべきです。
二番目の新しい概念は、strpos() 関数のコールです。 strpos() は PHP に組み込まれた関数で、 文字列の中である文字列を探します。この場合、 $_SERVER['HTTP_USER_AGENT'] (いわゆる干し草の山 【haystack】) の中で "MSIE" (いわゆる針【needle】) を探しています。 この文字列が見つかった場合、 この関数はこの関数は文字列の相対的な位置を返し、 見つからなかった場合には FALSE を返します。 この関数が FALSE を返さなければ、 if 文は TRUE と評価し、その{波括弧}の中のコードが実行されます。 そうでない場合は、実行されません。 if, else と strtoupper() や strlen() のような他の関数で、似たような例を作ってみてください。 関連するマニュアルの各ページにも例がのっています。 関数の使用法に自信がない場合には、マニュアルの 関数定義の読み方および PHP関数のセクションの両方を 読んでみると良いでしょう。
この例を少し発展させて、PHP ブロックの中からでも PHP モードから出たり入ったりすることができることを以下に示します。
例3 HTML および PHP モードの両方を混在させる
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
?>
<h3>strposが非falseを返しました</h3>
<center><b>あなたはInternet Explorerを使用しています</b></center>
<?php
} else {
?>
<h3>strposがfalseを返しました</h3>
<center><b>あなたはInternet Explorerを使用していません</b></center>
<?php
}
?>
この例の出力は以下のようになります。
<h3>strposが非falseを返しました</h3> <center><b>あなたはInternet Explorerを使用しています</b></center>
何かを出力する際に PHP の echo 文を使用する代わりに、PHP モードを抜けて通常の HTML を送信しています。ここで注意すべき重要で強力な点は、 スクリプトの論理フローが損なわれないということです。 strpos() が TRUE または FALSE のどちらを返すか、言い換えるとMSIE が見つかったかどうかに基づき、HTML ブロックだけが見る側に送信されることになります。
PHP の最も強力な機能の一つは、HTML フォームを処理する手段です。 理解するべき重要な基本概念は、あるフォームの中の全てのフォーム要素が、 自動的に PHP スクリプトで利用可能になるということです。 詳細は、マニュアルのセクション 外部からくる変数 および PHP でフォームを使用する例を参照してください。以下に HTML フォームの例を示します。
例1 簡単な HTML フォーム
<form action="action.php" method="post"> 名前: <input type="text" name="name" /> 年齢: <input type="text" name="age" /> <input type="submit" /> </form>
このフォームに関して特別なところはありません。これは通常の HTML フォームで特殊なタグは全く使用していません。 ユーザがこのフォームを記入し、投稿ボタンを押した時、 action.php ページがコールされます。 このファイルには、以下のようなコードを記述します。
例2 フォームからのデータを出力する
こんにちは、<?php echo htmlspecialchars($_POST['name']); ?>さん。
あなたは、<?php echo (int)$_POST['age']; ?> 歳です。
このスクリプトの出力例は次のようになります。
こんにちは、Joe さん。あなたは、22 歳です。
htmlspecialchars() および (int) の部分以外は、何を行っているかは明らかでしょう。 htmlspecialchars() は、html での特殊な文字を適切にエンコードし、 HTML タグや Javascript をページ内に仕込めないようにします。 また、age フィールドには数値が入ることがわかっているので、これを integer 型に 変換 します。これにより、おかしな文字が入力されることを防ぎます。 これらの処理を PHP に自動的に行わせるためには、 filter 拡張モジュールを使用します。 変数 $_POST['name'] と $_POST['age'] は PHP により自動的に設定されます。 前の部分では、スーパーグローバル$_SERVER を使用しましたが、 ここでは、全ての POST データを保持するスーパーグローバル $_POST を導入しています。 フォームのメソッドが POST であることに注意してください。 GET メソッドを使用している場合、 フォームの情報は代わりにスーパーグローバル $_GET に代入されます。リクエストデータの発信源に留意しない場合には、 スーパーグローバル変数 $_REQUEST を使用することもできます。この変数は、GET, POST, COOKIE, FILE データの混ざったものが含まれます。 import_request_variables() 関数も参照してください。
XForms の入力を PHP で扱うことも可能ですが、たいていの場合は HTML フォームのほうが快適に使用できるでしょう。 XForms は初心者向けのものではありませんが、気になるかたもいるかもしれません。 機能概要の節にある XForm から受信したデータの処理方法 を参照ください。
今や PHP は有名なスクリプト言語となってきており、 各自のスクリプトで再利用可能なコードとして、 多くのリソースが公開されています。PHP 言語の開発者の大部分は、 過去のバージョンとの互換性を保とうとしており、 過去のバージョン用に書かれたスクリプトは (理想的には) より新しいバージョンの PHP で変更せずに動作するはずです。 しかし、実際には、通常いくつかの変更が必要となります。
古いコードに影響を与える最近の重要な二つの変更点を以下に示します。
これらの変更に関する詳細は、 定義済みの変数 のセクションおよびそこにあるリンクを参照してください。
ここで得た知識により、マニュアルのほとんどの部分、 そしてサンプルのアーカイブにある多くのスクリプトの例を理解できるようになったはずです。 他の例を Web サイト php.net にあるリンクセクション » http://www.php.net/links.php で探すこともできます。
この他 PHP でできる多くのことを示すスライドプレゼンテーションを見るには、 PHP カンファレンスマテリアルサイト » http://talks.php.net/ を参照してください。
ここで、PHP の基礎の基礎について簡単なチュートリアルで説明したいと思います。 PHP は Web ページを作成する機能だけを有しているわけではありませんが、 ここでは PHP で動的な Web ページを作成することのみを扱います。詳細は、 PHP でできること と題するセクションを参照してください。
PHP を使用できる Web ページは、通常の HTML ページと全く同様に扱われ、 通常の HTML ページを作成するのと同様の方法で編集することができます。
インストールを行う前に、PHP を使用する用途を明確にしておく必要があります。 PHP を適用可能な分野としては、 「PHP にできることは?」 のセクションに記述されている通り、主に次の 3 つがあります。
最初の用途がもっとも一般的で、この場合、PHP 本体、Web サーバ、Web ブラウザ の 3 つが必要となります。Web ブラウザは既にお持ちだと思います。 使用しているオペレーティングシステムのセットアップの状況によっては、 さらに Web サーバも稼働しているかもしれません(例、Linux 上の Apache や Windows 上の IIS)。また、ホスティング会社で Web 用のスペースを 借りることもできるでしょう。この場合は、自分自身でセットアップを行う必要はなく、 PHP スクリプトを作成し、借りているサーバにアップロードするだけで、 ブラウザを使って処理結果を見ることができます。
一方、Web サーバと PHP を自分でセットアップする場合、 サーバに PHP を組み込む方法が 2 種類あります。 多くのサーバに対して、各サーバ独自のモジュールインターフェイス (SAPI とも呼ばれます) を通じて、ダイレクトに PHP を動作させることができます。 Apache、Microsoft Internet Information Server、 Netscape、iPlanet サーバなどがサポートされています。 ISAPI と呼ばれるマイクロソフト互換のモジュールインターフェイスを 持つ Web サーバ(OmniHTTPd など)もサポートされます。 PHP がモジュールのサポートをしていない Web サーバに対しては、 CGI もしくは FastCGI プロセサとして PHP を使用することができます。 つまり、PHP ファイルへのリクエストの処理を、 PHP のコマンドライン版の実行ファイルを使って行うよう Web サーバを設定することができます。
コマンドラインでのスクリプト実行に PHP を使用する (たとえば、オフラインで画像を自動生成するスクリプトを書いたり、 指定した引数に応じてテキストファイルを処理したりといった) 場合は、コマンドライン版の実行ファイルが必要となります。 詳細な情報については、 「PHP をコマンドラインから使用する」 の章を参照してください。この場合、サーバとブラウザは不要です。
PHP-GTK 拡張モジュールを使って、PHP でクライアントサイドの GUI アプリケーションを作成することも可能です。この場合のアプローチは Web ページの 作成とは完全に異なり、HTML を出力するのではなく、 ウインドウやその中のオブジェクトの管理を行うことになります。PHP-GTK に関する より詳細な情報については、 » PHP-GTK 拡張モジュールのサイト を参照してください。PHP-GTK は、PHP の公式アーカイブには含まれていません。
以降、この節では Unix や Windows 上の Web サーバに サーバモジュールインターフェイスおよび CGI 実行ファイルとして PHP をセットアップする方法を説明します。 コマンドラインの実行ファイルについての情報も、 これ以降の節で得られるでしょう。
PHP のソースコードと Windows 用のバイナリアーカイブは、 » http://www.php.net/ にあります。 アーカイブをダウンロードする際には、最も近い» ミラーサイト を使用するようにしてください。
このセクションでは、PHP を Unix プラットフォームの Apache 1.3.x にインストールする際の 手引きと注意事項について説明します。Apache 2 に関する手引きと注意 は 別のセクションにあります。
以下の説明では、バージョン番号が意図的に省略されています。 'xxx' の部分を使用するファイルに対応する番号に置き換えてください。 また、手順 10 で configure に与える引数は、 configure のすべてのオプション から選択できます。
例1 PHP インストール 手順 (Apache 共有モジュール版)
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. PHP の configure を行います。ここでは、様々なオプションを指定して、
特定の拡張モジュールを有効にするといった、カスタマイズを行います。
指定可能なオプションの一覧は、./configure --help を実行すると得られ
ます。以下に、簡単な設定例を示します。Apache 1 と MySQL のサポートを
有効にする例です。apxs のパスは、Apache のインストールパスによって
異なる場合があります。
./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install
configure オプションを変更して再インストールする場合は、最後の 3 つ
の手順を繰り返します。共有モジュールとしてコンパイルされた PHP を
有効にするには Apache を再起動するだけです。Apache の再コンパイルは
必要ありません。
特に指定がない限り、'make install' は、PEAR, phpize のような様々な
関連ツール、CLI 版 PHP などもインストールすることに注意してください。
13. php.ini ファイルをセットアップ
cp php.ini-development /usr/local/lib/php.ini
PHP の実行時設定を変更するには、.ini ファイルを編集します。
このファイルを他の場所に置きたい場合は、手順 10 で、
オプション --with-config-file-path=/path を使用します。
php.ini-development ではなく、php.ini-production を使用する場合は、PHP の
動作が変化しますので、ファイル中に記載されている変更点の一覧を確認する
ようにしてください。
14. httpd.conf を編集し、PHP の共有モジュールをロードするよう設定します。
LoadModule 命令の右側に記述するパスは、システムの PHP 共有モジュール
を指している必要があります。上記の make install により既にこの設定は
追加されている場合もありますが、確認が必要です。
PHP 4 の場合:
LoadModule php4_module libexec/libphp4.so
PHP 5 の場合:
LoadModule php5_module libexec/libphp5.so
15. httpd.conf の AddModule セクションに以下を追加します。
ClearModuleList の下あたりに追加してください。
PHP 4 の場合:
AddModule mod_php4.c
PHP 5 の場合:
AddModule mod_php5.c
16. Apache が特定の拡張子のファイルを PHP としてパースするよう(httpd.conf
を編集して)設定します。例えば、Apache が拡張子 .php のファイルを PHP
としてパースするように設定します。複数の拡張子も、空白で区切って記述する
だけで PHP としてパースさせることができます。以下の例は .php と .phtml
とを指定した場合です。
AddType application/x-httpd-php .php .phtml
PHP のソースをハイライト表示させるために、拡張子 .phps を設定することも
よく行われます。
AddType application/x-httpd-php-source .phps
17. Apache サーバを、通常の手順通り、起動させます(HUP または USR1
シグナルを 使用してリロードするのではなく、サーバを停止させてから
再起動する必要があります)。
PHP を静的オブジェクトとしてインストールすることも可能です。
例2 PHP インストール手順 (Apache 静的モジュール)
1. gunzip -c apache_1.3.x.tar.gz | tar xf -
2. cd apache_1.3.x
3. ./configure
4. cd ..
5. gunzip -c php-5.x.y.tar.gz | tar xf -
6. cd php-5.x.y
7. ./configure --with-mysql --with-apache=../apache_1.3.x
8. make
9. make install
10. cd ../apache_1.3.x
11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
(上の行は間違いではありません。この段階で libphp5.a は存在していませんが
この時点での存在は必須ではなく、後に作成されます。)
12. make
(httpd バイナリが作成され、Apache バイナリディレクトリにコピーすることが
できます。最初のインストールの場合は、この後 "make install" を行います。)
13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini
15. /usr/local/lib/php.ini を編集すると、PHP の実行時設定を変更できます。
httpd.conf もしくは srm.conf ファイルを編集し、以下を追記します。
AddType application/x-httpd-php .php
注意: PHP 4 については、php-5 を php-4 へ、 php5 を php4 へ置き換えてください。
インストールされている Apache や UNIX の種類によりますが、サーバの停止・再起動の 方法はいくつもあります。いろいろな Apache/UNIX の組合せを想定して、 サーバを再起動する典型的な方法を以下に示します。 /path/to/ を使用するシステムのアプリケーション へのパスに置き換えてください。
例3 Apache を再起動するためのコマンドの例
1. Linux および System V 系 /etc/rc.d/init.d/httpd restart 2. apachectl スクリプトを使用する方法 /path/to/apachectl stop /path/to/apachectl start 3. (OpenSSL を使用している場合) httpdctl および httpsdctl を使用する方法 /path/to/httpsdctl stop /path/to/httpsdctl start 4. mod_ssl や他の SSL サーバを使用している場合、手動で stop や start する /path/to/apachectl stop /path/to/apachectl startssl
apachectl および http(s)dctl の実行ファイルの位置は、システムにより 異なります。システムが locate もしくは whereis、which コマンドを サポートしているなら、これらサーバ制御用プログラムを見つけるために使用すると 便利でしょう。
PHP を Apache 用にコンパイルするには、いくつかの方法があります。以下に例を示します。
./configure --with-apxs --with-pgsql
この例では、Apache がロードする共有モジュールのライブラリ libphp5.so (あるいは PHP 4 では libphp4.so) が作成されます。この共有ライブラリの読み込みは、Apache の設定ファイル httpd.conf の LoadModule の行にて設定します。また、このライブラリには、 PostgreSQL サポートが埋め込まれます。
./configure --with-apxs --with-pgsql=shared
この例でも Apache 用 libphp4.so 共有ライブラリ が作成されます。加えて、(PHP 拡張モジュールの)共有ライブラリ pgsql.so も作成されます。この共有ライブラリ は、PHP 設定ファイル php.ini の extension ディレクティブにより、 もしくは PHP スクリプト内で明示的に dl() 関数により ロードされます。
./configure --with-apache=/path/to/apache_source --with-pgsql
この例では、libmodphp5.a ライブラリと mod_php5.c およびいくつかの付属ファイルが 作成され、Apache のソースツリーのディレクトリ src/modules/php5 にコピーされます。続いて、 --activate-module=src/modules/php5/libphp5.a と指定して Apache をコンパイルしてください。Apache のビルドシステムにより、libphp5.a が作成され、 httpd バイナリに静的にリンクされます (PHP 4 に対しては、php5 を php4 へ 置き換えてください)。PostgreSQL サポートはこの httpd バイナリに 直接埋め込まれるため、最終的な結果としては、Apache 全体と PHP 全体を含む 単一の httpd バイナリが出来上がります。
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
この例は、上と同様ですが、最終的な httpd バイナリに PostgreSQL サポートは直接埋め込まれません。共有ライブラリ pgsql.so が作成され、PHP 設定ファイル php.ini、もしくは dl() 関数により明示的に PHP にロードすることができます。
PHP のビルド方法を選択する際には、各方法の利点と欠点を考慮する必要 があります。共有モジュールのオブジェクトとしてビルドすると、Apache とは別に コンパイルすることができ、PHP を追加または変更する際に全体を 再コンパイルする必要がありません。PHP を Apache に(静的に)組み込むと、 PHP はより高速にロード・実行されます。詳細な情報については、 Apache の Web ページ 「» 動的共有オブジェクト (DSO) サポート」 を参照してください。
注意: Apache のデフォルトの httpd.conf には、次のように記述されたセクションがあります。
User nobody Group "#-1"これを "Group nogroup" (や "Group daemon")等に変更しないと、 PHP はファイルをオープンすることができません。
注意: --with-apxs=/path/to/apxs オプションを 指定する場合には実際にシステムにインストールされている apxs を指定してください。 Apache のソースディレクトリ内にある apxs を指定してはいけません。
このセクションでは、PHPを Unix システム上の Apache 2.x にインストールする際の 手引きと注意事項について説明します。
Apache2 の MPM マルチスレッドモードを実運用環境で使用することは推奨されません。 代わりに prefork MPM または Apache1 を使用してください。その理由については、 マルチスレッド版 MPM の Apache2の FAQ エントリを参照してください。
» Apache ドキュメンテーション を参照し、Apache 2.x の基本的な事項について理解しておくことを強く推奨します。 Apache のインストールオプションについてのより詳しい情報が得られます。
注意: PHP と Apache 2.0.x の互換性に関する注意
PHP の以下のバージョンは、Apache 2.0.x の最新版での動作が確認されています。
- PHP 4.3.0 およびそれ以降 (» http://www.php.net/downloads.php で入手可能)
- 最新の安定開発版。 ソースコード » http://snaps.php.net/php5-latest.tar.gz を入手、または Windows 用のバイナリ » http://snaps.php.net/win32/php5-win32-latest.zip をダウンロードしてください。
- プレリリース版を » http://qa.php.net/ から ダウンロード可能です。
- » anonymous SVN から PHP を 入手することも可能です。
以上のバージョンの PHPは、Apache 2.0.40 以降と互換性があります。
Apache 2.0 SAPI のサポートは PHP 4.2.0 で開始されました。 PHP 4.2.3 は Apache 2.0.39 で動作します。PHP 4.2.3 を Apache の他のバージョンと 組み合わせて使用しないでください。 PHP 4.3.0 もしくはそれ以降のバージョンの PHP を 最新版の Apache2 と組み合わせて使用することが推奨されます。
ここで挙げたバージョンの PHP は、Apache 1.3.x でも動作します。
最新バージョンの Apache HTTP Server を » Apache ダウンロードサイト からダウンロードし、上述のいずれかのバージョンの PHP を用意してください。 この手引きでは Apache 2.x で PHP を動作させるための 基本的な部分しかカバーしていません。さらに詳しい情報については、» Apache ドキュメンテーション を参照してください。 情報が古く不正確になってしまうため、以下では詳細なバージョン番号は 記述されていません。'NN' という文字列をご使用のバージョンに適宜置き換えて ください。
現在、Apache 2.x には 2.0 と 2.2 の二種類があります。 どちらを選ぶにしてもそれなりの理由があるでしょうが、 2.2 が現在の最新版です。もし選択の余地があるのなら 2.2 を使うことを推奨します。しかし、この例では 2.0 と 2.2 のどちらでも使えるようにしています。
例1 インストール手順 (Apache 2 共有モジュール版)
1. gzip -d httpd-2_x_NN.tar.gz
2. tar xvf httpd-2_x_NN.tar
3. gunzip php-NN.tar.gz
4. tar -xvf php-NN.tar
5. cd httpd-2_x_NN
6. ./configure --enable-so
7. make
8. make install
以上で Apache 2.x.NN が、モジュールの動的ロードとデフォルトの
MPM(マルチプロセッシングモジュール)である prefork が有効になった
状態で、/usr/local/apache2 にインストールされます。
インストールが正常か調べるには、以下のようにします。
/usr/local/apache2/bin/apachectl start
サーバの停止は、以下の通り。
/usr/local/apache2/bin/apachectl stop
引き続き PHP のセットアップを行います。
9. cd ../php-NN
10. PHP の configure を行います。ここでは、様々なオプションを指定し、特定の
拡張モジュールを有効にするといったカスタマイズを行います。指定可能な
オプションの一覧は、./configure --help を実行すると得られます。以下に、
Apache 2 と MySQL のサポートを有効にする、簡単な設定例を示します。
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
11. make
12. make install
configure オプションを変更して再インストールする場合は、最後の 3 つ
の手順を繰り返します。共有モジュールとしてコンパイルされた PHP を
有効にするには Apache を再起動するだけです。Apache の再コンパイルは
必要ありません。
特に断りがない限り、'make install' は、PEAR、phpize のような様々な
関連ツール、CLI 版 PHP などもインストールすることに注意してください。
13. php.ini ファイルを設定する
cp php.ini-development /usr/local/lib/php.ini
PHP の実行時設定を変更するには、.ini ファイルを編集します。
このファイルを他の場所に置きたい場合は、手順 10 で、
オプション --with-config-file-path=/path を使用します。
php.ini-development ではなく、php.ini-production を使用する場合は、PHP の
動作が変化しますので、ファイル中に記載されている変更点の一覧を確認する
ようにしてください。
14. httpd.conf を編集し、PHP の共有モジュールをロードするよう設定します。
LoadModule 命令の右側に記述するパスは、システムの PHP 共有モジュール
を指している必要があります。上記の make install により既にこの設定は
追加されている場合もありますが、確認が必要です。
LoadModule php5_module modules/libphp5.so
15. Apache が特定の拡張子のファイルを PHP としてパースするよう設定します。
たとえば、Apache が拡張子 .php のファイルを PHP としてパースするようにします。
単に Apache の AddType ディレクティブを使うだけではなく、
悪意を持ってアップロード (あるいは作成) された exploit.php.jpg
のようなファイルが PHP として実行されてしまわないようにしたいものです。
この例では、PHP としてパースさせたい任意の拡張子を追加していくだけです。
ためしに .phtml を追加してみましょう。
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
あるいは、拡張子 .php, .php2, .php3, .php4, .php5, .php6, そして
.phtml のファイルだけを PHP として実行したいは、このようにします。
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
拡張子 .phps のファイルを php ソースフィルタに処理させて
構文ハイライトつきのソースコードとして表示させるには、このようにします。
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
mod_rewrite を使うと、.phps ファイルに名前を変えたりコピーしたりしなくても
任意の .php ファイルを構文ハイライトつきのソースコードとして表示させることができます。
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
php ソースフィルタは、実運用環境では無効にしておかなければなりません。
有効にしてしまうと、ソースコードに埋め込まれた機密情報や重要情報が漏れてしまう危険があります。
16. Apache サーバを、通常の手順通り、起動させます。
/usr/local/apache2/bin/apachectl start
- あるいは -
service httpd restart
上記の手順で、Apache2 ウェブサーバ上で SAPI モジュールとして PHP を動作させることができます。もちろん、Apacheと PHP の双方とも、もっと多くの configure オプションを指定することが出来ます。 詳しい情報を得るには、ソースツリーディレクトリで ./configure --help を実行してください。
マルチスレッド版の Apache をビルドするには、Apache のビルド時に標準の prefork MPM ではなく worker MPM を選択します。 そのためには、先ほどの手順 6 のところで ./configure の引数に次のオプションを追加します。
そうすることで何がどのようになるのかをきちんと認識したうえで、これを行わなければなりません。 詳細については Apacheドキュメントの » マルチプロセッシングモジュール (MPM) を参照してください。
注意: Apache MultiViews FAQ では、PHP でマルチビューを使う方法について解説しています。
注意: マルチスレッド版の Apache をビルドするには、ターゲットシステムがスレッドに対応していなければなりません。 その場合は、PHP についても実験的な Zend Thread Safety (ZTS) でビルドしなければなりません。 この構成では使用できない拡張モジュールもあります。推奨される方法は、Apache をデフォルトの prefork MPM モジュールでビルドすることです。
ここでは、Unix システム上の Lighttpd 1.4 で PHP を使用する際の注意点とヒントをまとめます。
まず » Lighttpd trac で Lighttpd のインストール方法をよく読んでからこれ以降に進みましょう。
PHP と Lighttpd を組み合わせる際におすすめの SAPI は fastcgi です。 fastcgi は PHP 5.3 以降の php-cgi では自動的に有効になりますが、 それより前のバージョンの場合は php の configure 時に --enable-fastcgi を指定しなければなりません。 PHP で fastcgi が有効になっているかどうかを調べるには、 php -v の結果が PHP 5.2.5 (cgi-fcgi) のようになっているかどうかを確認します。 PHP 5.2.3 以前の場合は、(php-cgi ではなく) php バイナリで fastcgi が使えるようになります。
Lighttpd から php に接続して fastcgi プロセスを立ち上げさせるよう設定するには、 lighttpd.conf を編集します。ローカルシステムの fastcgi プロセスに接続するにはソケットの使用をおすすめします。
例1 lighttpd.conf の抜粋
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "/usr/local/bin/php-cgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"min-procs" => 1,
"max-procs" => 1,
"idle-timeout" => 20
))
)
bin-path ディレクティブにより、lighttpd が fastcgi プロセスを動的に起動できるようになります。 PHP は、環境変数 PHP_FCGI_CHILDREN の内容に応じて子プロセスを起動します。 "bin-environment" ディレクティブは、起動するプロセスの環境を設定します。 リクエストの数が PHP_FCGI_MAX_REQUESTS の値に達すると、 PHP は子プロセスを kill します。ディレクティブ "min-procs" および "max-procs" は、PHP での使用は避けるべきです。 PHP は自身の子プロセスを自前で管理しますし、 APC のような opcode キャッシュは PHP が管理する子プロセスしか共有しません。 "min-procs" を 1 より大きい値に設定すると、 PHP レスポンダの数が PHP_FCGI_CHILDREN にその値をかけたものとなります (2 min-procs * 16 子プロセスで 32 のレスポンダとなります)。
Lighttpd には spawn-fcgi というプログラムが含まれており、 fastcgi プロセスの起動を簡単に行えるようになっています。
spawn-fcgi なしでプロセスを起動することもできますが、多少難易度が上がります。 環境変数 PHP_FCGI_CHILDREN で、PHP がリクエストの処理用に起動する子の数を設定します。 PHP_FCGI_MAX_REQUESTS は、各子プロセスの生存期間 (リクエスト数) を設定します。php レスポンダを起動するシンプルな bash スクリプトの例を以下に示します。
例2 FastCGI レスポンダの起動
#!/bin/sh
# php-cgi バイナリの場所
PHP=/usr/local/bin/php-cgi
# PID ファイルの場所
PHP_PID=/tmp/php.pid
# アドレスへのバインド
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# ドメインソケットへのバインド
FCGI_BIND_ADDRESS=/tmp/php.sock
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000
env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
$PHP -b $FCGI_BIND_ADDRESS &
echo $! > "$PHP_PID"
fastcgi インスタンスを複数のリモートマシンで起動して、 アプリケーションの規模を拡大することができます。
例3 リモートの php-fastcgi インスタンスへの接続
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)
PHP は Caudium Web サーバ用 Pike モジュールとしてビルド可能です。 以下に PHP 4 を Caudium にインストールする手順を示します。
例1 Caudium へのインストール手順
1. PHP 4 をインストールする前に Caudium のインストールを確認する
PHP 4 を正しく動作させるためには、Pike 7.0.268 以降
が必要です。この例では、Caudium が /opt/caudium/server/ に
インストールされていることを仮定します。
2. php-x.y.z ディレクトリ(x.y.z はバージョン番号)に移動する
3. ./configure --with-caudium=/opt/caudium/server
4. make
5. make install
6. 実行中ならば、Caudium を再起動する
7. GUI 設定画面にログインし、PHP 4 サポートを追加したい仮想サーバに移動する
8. Add Module をクリックし、PHP 4 Script Support module を追加する
9. 'PHP 4 interpreter isn't available' と出力される場合は、サーバを
再起動したかどうか確認する
PHP4.so に関するエラーを確認するには、
/opt/caudium/logs/debug/default.1 をチェックしてください。
caudium/server/lib/[pike-version]/PHP4.so
が存在することも確認してください。
10. 必要に応じて、PHP Script Support module を設定する
もちろん、PHP 4 で利用可能となった多くの PHP 拡張モジュールを有効にして Caudium モジュールをコンパイルすることもできます。 各拡張モジュール特有の設定オプションについてはリファレンスページを 参照してください。
注意: MySQL サポートを有効にして PHP 4 をコンパイルする場合、必ず 通常の MySQL クライアントのコードを使用するよう指定する必要があります。 そうでない場合、MySQL サポートを組み込み済みの Pike と衝突する 可能性があります。これを行うには、 --with-mysql オプションにより MySQL インストールディレクトリを指定します。
PHP を fhttpd モジュールとして作成するには、 "Build as an fhttpd module?" に対して、 "yes" と答えてください (configure の オプション --with-fhttpd=DIR) 。 そして、fhttpd ソースのベースディレクトリを指定してください。 デフォルトディレクトリは、 /usr/local/src/fhttpd です。 fhttpd を使用している場合には、PHP をモジュールとして作成した方が、 より優れた性能、より高度な制御/リモート実行機能を使用することができます。
注意: PHP4.3.0 をもって、fhttpd サポートは廃止されました。
このセクションでは、Sun Solaris 上の Sun Java System Web Server, Sun ONE Web Server, iPlanet and Netscape server に PHP をインストールする際の 手引きと注意事項について説明します。
PHP 4.3.3 より、NSAPI モジュール を使って 独自エラーページ および ファイル一覧表示ページの生成 が可能です。 Apache 互換の関数も追加されています。 また、これらの Web サーバについての サブリクエストに関する注意 も参照してください。
Netscape Enterprise Server (NES) への PHP のインストールに関しては » http://benoit.noss.free.fr/php/install-php4.html にも情報があります。
Sun JSWS/Sun ONE WS/iPlanet/Netscape Web サーバ用に PHP をビルド するには、--with-nsapi=[DIR] オプションに適切なインストールディレクトリを指定してください。 デフォルトのディレクトリは、通常、/opt/netscape/suitespot/ です。 /php-xxx-version/sapi/nsapi/nsapi-readme.txt も参照してください。
以下のパッケージを、» http://www.sunfreeware.com/ や他のダウンロードサイトから取得し、 インストールします。
export PATH
とし、パスを有効にします。
gunzip php-x.x.x.tar.gz
(.gz 配布の場合のみ)
tar xvf php-x.x.x.tar
cd ../php-x.x.x
以下のステップを実施します。 /opt/netscape/suitespot/ は netscape サーバがインストールされている場所です。 異なる場合は、適切なパスに変更してください。
./configure --with-mysql=/usr/local/mysql \ --with-nsapi=/opt/netscape/suitespot/ \ --enable-libgcc
基本インストールを実行したら、適当な readme ファイルを参照してください。 いくつかの追加インストール手順を実行する必要があるかもしれません。
まず、共有ライブラリの探索のために、環境変数 LD_LIBRARY_PATH にパスをいくつか追加する必要があります。 Webサーバの開始スクリプトで行うのが最善でしょう。 開始スクリプトは、通常 /path/to/server/https-servername/start にあります。 また、/path/to/server/https-servername/config/ にある設定ファイルの編集も必要です。
mime.typesに次の行を追加します (administration server で行えます。)
type=magnus-internal/x-httpd-php exts=php
magnus.conf (サーバ>= 6の場合) または obj.conf (サーバ< 6の場合) を編集し、 以下の行を追加します。 ここで、shlib はシステムにより異なります。 /opt/netscape/suitespot/bin/libphp4.so 等となるでしょう。 mime types init の後に置いてください。
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so" Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
(PHP >= 4.3.3) php_ini パラメータはオプションですが、 これを指定することにより、Web サーバの設定ファイルがあるフォルダに php.ini を置くことが可能になります。
obj.conf のデフォルトオブジェクトを設定します (バージョン 6 以降の仮想サーバの場合は vserver.obj.conf。)
<Object name="default"> . . . .#NOTE this next line should happen after all 'ObjectType' and before all 'AddLog' lines Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...] . . </Object>
(PHP >= 4.3.3) 追加のパラメータとして、いくつかの特別な php.ini 値を 追加することができます。例えば、コンテキスト php4_execute に対して docroot="/path/to/docroot" を設定するなどです。 また、論理値の場合、0/1 を値として使用してください。 "On","Off",... では正しく動作しません。 例えば、zlib.output_compression="On" ではなく、 zlib.output_compression=1 とします。
以下は、(cgi-bin ディレクトリ のように) PHP スクリプトだけが置かれるディレクトリを設定したい場合にのみ必要です。
<Object name="x-httpd-php"> ObjectType fn="force-type" type="magnus-internal/x-httpd-php" Service fn=php4_execute [inikey=value inikey=value ...] </Object>
こうしておくと、Administration Server に特定のディレクトリを設定し、 これをスタイル x-httpd-php に割り付けることができます。 このディレクトリの中にあるすべてのファイルは PHP スクリプト として実行されます。 これは、ファイルの拡張子を .html に変更し、 PHP が使用されている事を隠したい場合に有用です。
認証を設定します。PHP による認証は他の認証と併用することはできません。 すべての認証は、PHP スクリプトに渡されます。 サーバ全体に対して PHP 認証を設定する場合は、以下の行を追加してください。
<Object name="default"> AuthTrans fn=php4_auth_trans . . . </Object>
単一のディレクトリでのみ PHP による認証を行う場合は、次の行を追加します。
<Object ppath="d:\path\to\authenticated\dir\*"> AuthTrans fn=php4_auth_trans </Object>
注意: PHP が使用するスタックサイズは Web サーバの設定に依存します。 非常に大きい PHP スクリプトを実行させた際にクラッシュが発生する場合は、 Administration Server でスタックサイズ("MAGNUS EDITOR") を大きくすると良いでしょう。
Sun JSWS/Sun ONE WS/iPlanet/Netscape がマルチスレッドの Web サーバだという事が PHP スクリプトを書く際に重要になります。すべてのリクエストは同一の (Web サーバ自体の)プロセス空間で実行され、そのプロセス空間は 1 つの環境変数しか 持っていません。PATH_INFO や HTTP_HOST CGI 変数を取得する場合、 古い PHP で行っていたような方法、つまり getenv() 関数を使用する方法や他の同等な方法 (グローバル変数の登録機能、 $_ENV 等)を使うのは正しい方法ではありません。 Web サーバの環境変数をただ単に取得するだけと、 正しい CGI 変数は得られないのです。
注意: なぜ正しくない CGI 変数が登録されているのでしょうか?
それは、Web サーバのプロセスを Administration Server から起動させる際、 Web サーバの起動スクリプトが CGI スクリプトとして実行されるためです。したがって、 起動された Web サーバの環境変数には CGI 変数も含まれることになります。 Administration Server 以外から Web サーバを起動してみればこのことをテストできるでしょう。 ルートユーザでコマンドラインを使って、手動で起動してみると、CGI 変数らしき 環境変数が登録されないことが確認できるでしょう。
PHP 4.x のスクリプトで CGI 変数を取得する場合は、スーパーグローバル $_SERVER を用いるのが正しい方法です。また、$HTTP_HOST などを使う古いスクリプトを使用する場合は、php.ini で register_globals をオンにし、変数のパースの順番 (variables_order) を変更してください ("E" を削除。環境変数を読み込む必要は無いため。)
variables_order = "GPCS" register_globals = On
PHP を使って、"404 Not Found" などに対するエラーページを生成することが できます。オーバーライドしたいすべてのエラーページ対して、以下の行を obj.conf 中のオブジェクトに追加してください。
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
ここで、XXX は HTTP のエラーコードです。 追加したものと干渉する Error ディレクティブは削除してください。 発生するすべてのエラーに対応するページを設定したい場合は、 code パラメータを省略してください。スクリプトで HTTP ステータス コードを取得するには、 $_SERVER['ERROR_TYPE'] を使用します。
独自のファイル一覧表示ページを PHP を使って生成することも可能です。 ファイル一覧表示を行う PHP スクリプトを作成し、obj.conf の type="magnus-internal/directory" の行に 書かれているデフォルトの Service 行を以下のように置き換えます。
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
エラーページ、ファイル一覧表示ページのいずれでも、元の URI および 変換後の URI は、それぞれ、$_SERVER['PATH_INFO'] および $_SERVER['PATH_TRANSLATED'] に格納されます。
NSAPI モジュールは、現在、nsapi_virtual() 関数 (エイリアス: virtual()) をサポートしており、 Web サーバへサブリクエストを行い、結果を Web ページへ挿入することができます。 ただし、この関数は NSAPI ライブラリの文書化されていない機能を若干使用しています。 モジュールは、自動的に必要な関数群を探し、可能であればそれらの関数を 使用ます。もし使用可能でなければ、nsapi_virtual() 関数は 使用不可となります。
注意: nsapi_virtual() サポートは「実験的」な機能です。
デフォルトでは、PHP は CGI プログラムとしてビルドされます。すなわち、 コマンドラインインタプリタが生成され、 CGI 処理や Web 以外での PHP スクリプトの実行に使用できます。 通常は、PHP のモジュール組込みをサポートしている Web サーバに対しては、 性能面からモジュール版の PHP を選択するべきです。 しかし、CGI 版を使用すると、ページに応じて異なるユーザ ID で PHP を実行することが可能となる利点があります。
CGI モードで公開したサーバは、いくつかの脆弱性の標的となる可能性があります。 これらの攻撃からサーバを守る方法については、 CGI セキュリティ のセクションを参照してください。
PHP4.3.0 において PHP に重要な追加がなされ、 CLI (Command Line Interface) と呼ばれる新しい SAPI が CGI バイナリと同じ名前で存在するようになりました。 configure のオプションにしたがって {PREFIX}/bin/php に インストールされます。詳細については、マニュアルの 「PHPをコマンドラインから使用する」を 参照してください。
PHP を CGI 版のプログラムとしてビルドした場合、make test とすることで、ビルドされたバイナリをテストすることが 可能です。常にビルド後のテストを行うことが推奨されます。これにより、 使用するプラットホームにおける PHP の問題を早期に見付けることが可能となり、 後になってその問題に苦しむことがなくなるでしょう。
いくつかのサーバが提供する環境変数 は、現在の » CGI/1.1 規約 において定義されていません。以下の変数だけがこの規約で定義されています。 AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL, および SERVER_SOFTWARE 。 その他の環境変数は、「ベンダー拡張」として取り扱うべきです。
このセクションでは、HP-UX へインストールする場合特有の注意とコツについて説明します
PHP を HP-UX にインストールするには、二通りの方法があります。 自分でコンパイルするか、あるいはコンパイル済みのバイナリを使用するかのどちらかです。
公式のコンパイル済みパッケージは、こちらにあります。 » http://software.hp.com/
このセクションをきちんと書き直すまで、PHP (および拡張モジュール) を HP-UX でコンパイルする方法についてのドキュメントをいったん削除します。 当面は、以下のドキュメントを参照ください。 » Building Apache and PHP on HP-UX 11.11
このセクションでは、PHP を » OpenBSD 3.6 に インストールする場合に固有の注意事項とヒントについて説明します。
OpenBSD に PHP をインストールするには、バイナリパッケージを使用することが もっとも簡単で、また推奨される方法です。 コアパッケージは他のモジュールと分けられており、別個に インストールしたり、削除したりすることができます。OpenBSD の CD や FTP サイトから 必要なファイルを見つけることができます。
インストールに必要なメインのパッケージは php4-core-4.3.8.tgz です。これには基本エンジン (と gettext と iconv) が含まれています。次に、 php4-mysql-4.3.8.tgz や php4-imap-4.3.8.tgz のようなモジュールパッケージを 探してください。これらのモジュールを php.ini 上で有効/無効にするには phpxs コマンドを使用する必要があります。
例1 OpenBSD パッケージインストールの例
# pkg_add php4-core-4.3.8.tgz # /usr/local/sbin/phpxs -s # cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini (add in mysql) # pkg_add php4-mysql-4.3.8.tgz # /usr/local/sbin/phpxs -a mysql (add in imap) # pkg_add php4-imap-4.3.8.tgz # /usr/local/sbin/phpxs -a imap (remove mysql as a test) # pkg_delete php4-mysql-4.3.8 # /usr/local/sbin/phpxs -r mysql (install the PEAR libraries) # pkg_add php4-pear-4.3.8.tgz
OpenBSD のバイナリパッケージに関する詳細は、man ページの » packages(7) を 参照してください。
» ports ツリー を使って PHP のソースを コンパイルすることもできます。ただし、この方法は OpenBSD に詳しいユーザにのみ 推奨されます。PHP 4 ポートは core, extensions の 2 つのサブディレクトリに 分割されています。extensions ディレクトリはサポートされているすべての PHP モジュールのサブパッケージを生成します。 これらのうちのいずれかのモジュールを生成したくない場合には、 no_* FLAVOR を使用してください。例えば、imap モジュール のビルドをスキップするには FLAVOR を no_imap に セットします。
OpenBSD の過去のリリースは、静的にリンクされた PHP をコンパイルするために FLAVORS システムを使用していました。 この方法でバイナリパッケージを作成することは困難なため、 この方法は現在は使用されていません。 古い安定版の ports ツリーを使用することもできますが、 これらは OpenBSD チームによりサポートされていません。 これに関するコメントがある場合、port の現在の管理者は Anil Madhavapeddy (avsm at openbsd dot org) です。
このセクションでは、Solaris に PHP をインストールする際の注意とコツを説明します。
Solaris には、C コンパイラおよび関連するツールがインストールされていない事が しばしばあります。GNU 版の各種ツールが必要となりますが、その理由については こちらの FAQ をお読みください。 必要なソフトウエアは次の通りです。
加えて、(Oracle や MySQLなどの) 使用する設定に応じた追加ソフトウエアを インストール(おそらくはコンパイルも)する必要があります。
Solaris へのインストールでは、 pkgadd を使用すれば、必要なコンポーネントのインストール処理を 簡単に行うことができます。
このセクションでは、» Debian GNU/Linux に PHP をインストールする際の注意事項とヒントについて説明します。
Unix 上で PHP をビルドする方法は Debian でもそのまま使えます。 しかし、このページではもうひとつの方法として Debian 固有の情報を扱います。 apt-get や aptitude といったコマンドの使い方です。 このマニュアルページでの説明は、これらふたつのコマンドのどちらを使っても実行できます。
まず、Apache 2 と統合する場合は libapache2-mod-php5、PEAR を使う場合は php-pear などの関連パッケージが必要となることを知っておきましょう。
次に、パッケージをインストールする前にはパッケージ一覧を最新に更新しておくようにしましょう。 これは、apt-get update コマンドで行います。
例1 Debian で Apache 2 と組み合わせるインストール例
# apt-get install php5-common libapache2-mod-php5 php5-cli
APT により、Apache 2 用の PHP 5 モジュールとその依存モジュールが自動的にインストールされます。 インストール中に Apache を再起動する旨が表示されなかった場合は、手動で再起動する必要があります。
例2 PHP インストール後に Apache を停止・起動させる
# /etc/init.d/apache2 stop # /etc/init.d/apache2 start
ここまでのセクションでは、PHP のコアモジュールだけをインストールしました。 おそらく、さらに MySQL や cURL、 GD などの追加モジュールもインストールしたくなることでしょう。 これらも apt-get コマンドでインストールすることができます。
例3 追加の PHP 5 パッケージを探す方法
# apt-cache search php5 # aptitude search php5 # aptitude search php5 |grep -i mysql
上記の出力を見てわかるとおり、(php5-cgi や php5-cli, php5-dev といった 特別なパッケージのほかにも) さまざまなパッケージがあり、インストールすることが可能です。 必要なものを見定めて、apt-get か aptitude でインストールしましょう。 Debian は依存性のチェックを行うので、たとえば MySQL と cURL をインストールする場合はこのようになります。
例4 PHP と MySQL、cURL のインストール
# apt-get install php5-mysql php5-curl
APT は自動的に、 /etc/php5/apache2/php.ini や /etc/php5/conf.d/pdo.ini などの php.ini に適切な行を追加し、extension=foo.so といった内容が書き込まれます。しかし、これらの変更を有効にするにはウェブサーバ (Apache など) を再起動しなければなりません。
本章では、UNIX 系のシステムへの PHP のインストールと設定に関する 手引きを示します。使用するプラットフォームや Web サーバについての セクションを参照して、インストールを行ってください。
このマニュアルでは、 「インストールにあたっての一般的な注意事項」 の章で述べたように、Web 用のセットアップを主に扱います。加えて、 コマンドラインから PHP を使うためのセットアップについても扱います。
Unix プラットホームに PHP をインストールする方法はいくつかあり、 コンパイルして設定するやり方と(コンパイル済みの)パッケージを使う方法とに 別けられます。この手引きでは、コンパイルして設定する方法を主に取り上げます。 Unix 系システムには、パッケージを用いるインストールシステムを持つものも多く、 一般的なセットアップを行うには、パッケージが役に立つでしょう。ただし、 (セキュアサーバや様々なデータベースドライバなど)少々特殊な機能が必要な場合、 PHP や Web サーバをビルドする必要が有るかもしれません。ソフトウエアの ビルドに不慣れな場合は、必要な機能を含めてビルドされたパッケージを 誰か他の人が作成済みでないかを調べてみると良いでしょう。
コンパイルにあたって必要な知識とソフトウエアを以下に示します。
PHP の初期設定および設定プロセスは、configure スクリプトに与えられたコマンドラインオプションによりコントロールされます。 ./configure --help とすると、 オプションの一覧と簡単な解説が表示されます。 本マニュアルでは、オプションの種類ごとに別けて解説されています。 PHP 本体のオプションの一覧は 付録 にまとめられています。 各拡張モジュール特有のオプションは、関数リファレンスのページに記述されています。
PHP の configure が完了していないと、 拡張モジュールや本体の実行ファイルのビルドができません。 make コマンドの実行にあたっては、注意してください。 configure がうまく行かず原因もよくわからない場合は、 問題が起きた場合 についての章を参照してください。
Mac OS X 用にコンパイルされた PHP パッケージがいくつか存在します。 一般的なセットアップを行うにあたって、利用することができます。ただし、 (セキュアサーバや様々なデータベースドライバなど)少々特殊な機能が必要な場合、 PHP を自分でビルドする必要が有るかもしれません。ソフトウエアの ビルドやコンパイルに不慣れな場合は、必要な機能を含めてビルドされたパッケージを 誰か他の人が作成済みでないかを調べてみると良いでしょう。
以下の場所に、簡単にインストールできる Mac OS 用のコンパイル済み PHP パッケージがあります。
PHP は、OS X バージョン 10.0.0 以降の Mac に標準添付されています。 デフォルトのウェブサーバで PHP を有効にするには、Apache 設定ファイル httpd.conf で数行のコメントを解除する必要があります。 一方、CGI や CLI はデフォルトで有効になっています (ターミナルから簡単に利用できます)。
PHP を有効にするには以下の手順を使用してください。 これは、ローカルの開発環境を手早く設定する方法を示したものです。 常に PHP を最新バージョンに更新することを 強く推奨します。 多くのソフトウェアでは、新しいバージョンでは多くのバグが修正されています。 また機能追加もされています。PHP も同様です。 詳細は、適切な MAC OS X インストールドキュメントを参照ください。 以下の手順は初心者を対象としたもので、 まずデフォルトの設定で動作させるための手順を示しています。 すべてのユーザが、新しいパッケージ版をコンパイルしてインストールすることを推奨します。
標準的なインストール方法は mod_php を使用するものです。Mac OS X 上の Apache web server (デフォルトのウェブサーバで、System Preferences からアクセスできます) 上に、mod_php を組み込むには次のようにします。
注意: Unix ベースのテキストエディタ、たとえば nano を用いて、ターミナルでこのファイルを開きます。このファイルの所有者は root なので、sudo コマンドを使用して (root として) 開く必要があります。つまり、ターミナル上で sudo nano /private/etc/apache2/httpd.conf と入力します (その後、パスワードを聞かれます)。 覚えておくべき nano コマンドは次のとおりです。^w (検索)、 ^o (保存) そして ^x (終了)。 ここで ^ は Ctrl キーを表します。
注意: Mac OS X 10.5 より前のバージョンにバンドルされている PHP および Apache は、バージョンが古いものです。その場合、Apache の設定ファイルは /etc/httpd/httpd.conf となります。
テキストエディタで、次のような行 (これらのふたつの行は並んでいないこともあります。 それぞれをファイル中で探してください) のコメントをはずします (# を削除します)。
# LoadModule php5_module libexec/httpd/libphp5.so # AddModule mod_php5.c
指定した拡張子 (例: .php .html および .inc) が PHP でパースされるようにします。
以下のような行が httpd.conf にあれば (Mac Panther 以降にはあります)、 PHP を有効にするだけで .php ファイルが自動的に PHP で処理されます。
<IfModule mod_php5.c>
# If php is turned on, we respect .php and .phps files.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Since most users will want index.php to work we
# also automatically enable index.php
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
注意: OS X 10.5 (Leopard) より前のバージョンには PHP 5 ではなく PHP 4 がバンドルされています。その場合は、ここまでの説明にある 5 という部分を 4 に読み替えてください。
phpinfo() 関数は、PHP についての情報を表示します。 DocumentRoot 内に、次のような PHP コードを含むファイルを作成してください。
<?php phpinfo(); ?>
CLI (あるいは旧バージョンの CGI) は、php という名前で、おそらく /usr/bin/php にあります。 ターミナルを開き、PHP マニュアルの Open up the terminal, read the PHP をコマンドラインから使用する を読んだうえで php -v を実行してみましょう。 これは、PHP バイナリのバージョンを表示します。 phpinfo() をコールしても、この情報を取得できます。
tar ファイルを展開し、Apache の configure プログラムを以下のように実行します。
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache
コンパイラに最適化を行わせたい場合には、次の行を追加します。
setenv OPTIM=-O2
次に、PHP 4 のソースディレクトリで、configure を行います。
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/share/man \
--with-xml \
--with-apache=/src/apache_1.3.12
他に追加するもの (MySQL、GD 等) がある場合、必ずここでこれらを追加する ようにしてください。--with-apache 文字列に関しては、Apache ソースのディレクトリを /src/apache_1.3.12 のように指定してください。
PHP4 を ビルドするよう Apache を 再設定します。
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache \ --activate-module=src/modules/php4/libphp4.a
libmodphp4.a が期限切れというメッセージが出力されるかもしれません。 この場合、Apache ソースディレクトリの配下の src/modules/php4 ディレクトリに行き、以下のコマンドを実行します、 ranlib libmodphp4.a 。 次に Apache ソースディレクトリのルートに戻り、 上記の configure コマンドを再び実行します。 これにより、リンクテーブルが最新になります。再度、 make および make installを 実行します。
cp php.ini-development /usr/local/bin/php.ini
、
または (local ディレクトリが無い場合)
cp php.ini-development /usr/bin/php.ini
。
以下の手順は、MacOS X に含まれる Apache ウェブサーバ用の PHP モジュールを、MacOS X の GUI を用いてインストールするための手引きです。 このバージョンには MySQL、PostgreSQL そして iODBC データベースのサポートが含まれ、 また cURL、GD、PDFLib、LDAP などのサポートも含まれます。これらの手引きは » Marc Liyanage 氏に提供していただいたものです。
ここから先に進む前に、自分が何をしようとしているのかをきちんと把握しておきましょう! さもないと、インストールされている Apache が取り返しの付かない状態になってしまうかもしれません。
注意: これらの手順は、Apple から出荷されたときのままの状態の Apache ウェブサーバに対してのみ動作するものです。 Apache をリビルドしたりアップグレードしたりしている場合は、 自分で PHP モジュールをビルドしなければなりません。
インストールするには、
http://www2.entropy.ch/download/entropy-php-5.2.4-1.tar.gz
をダウンロードします。
wget
http://www2.entropy.ch/download/entropy-php-5.2.4-1-apache2.tar.gz
をダウンロードします。
これだけです! この時点で PHP が動作しているはずです。動作確認をするには、 まず test.php という 名前のファイルをホームディレクトリの Sites フォルダに作成してください。そして、このファイルを編集し、 <?php phpinfo() ?> と書いてください。
次に、127.0.0.1/~あなたのユーザ名/test.php をウェブブラウザで開いてください。ステータステーブルが表示され、 インストールした PHP モジュールに関する情報を見ることができるはずです。
本章では、PHP を Mac OS X 上にインストールする際の注意事項とコツを説明します。 クライアント版とサーバ版という、わずかに異なる 2 種類のバージョンの Mac OS X が 存在しますが、本マニュアルでは、両方のシステムへのインストールについて扱います。 PHP は、MacOS 9 およびそれ以前のバージョンでは使用できませんので、注意してください。
CGI 版の PHP をインストールする Windows 用 PHP インストーラが、 » http://www.php.net/downloads.php から取得可能です。 IIS、PWS、Xitami に対しては Web サーバの設定も同時に行われます。 このインストーラには、PHP 拡張モジュール (php_*.dll) が含まれていません。 拡張モジュールは、Zip パッケージもしくは PECL ダウンロード からのみ入手できます。
注意: Windows インストーラは PHP を動作させるための簡便な方法で、 (拡張モジュールの自動設定ができないといった)制約がいくつかあります。 インストーラの利用は、PHP をインストールする最適な方法ではありません。
まずはじめに、使用する HTTP (Web) サーバを システムにインストールし、完全に動作するようにして下さい。
インストーラを実行し、インストールウイザードの指示に従って下さい。 2 種類のインストール方法がサポートされています。一つ目は standard で、 設定の選択肢についてデフォルト値が示されます。もう一つは advanced で、 選択肢について質問が行われます。
インストールウイザードは、php.ini ファイルを設定し、 PHP が使用可能となるように Web サーバを設定するために必要な情報を集めます。 ただし、Apache をはじめとするいくつかの web サーバでは、インストーラによる自動での 設定変更は行われず、手動で設定変更する必要があります。
インストールが完了すると、システムもしくはサーバを再起動する必要があるのか、 そのまま PHP の使用を開始すればよいのか表示されます。
こうしてインストールされた PHP の設定は安全ではないことに注意して下さい。安全に PHP を設定したい場合は、マニュアルでインストールし、オプションを注意深く設定するべきです。 上記の自動設定により PHP のインストールを瞬時に行うことが可能となりますが、 インターネットに接続されたサーバで使用されうるものではありません。
Windows 用 PHP インストーラの最新版は、MSI 形式になっています。これは Wix Toolkit (» http://wix.sourceforge.net/) で作成されています。 このインストーラは、インストールおよび PHP の設定、そして組み込みのモジュールと PECL 拡張モジュールの設定だけでなく、 IIS、Apache そして Xitami などといった多くのウェブサーバの設定も行います。
最初に、お好みの HTTP (ウェブ) サーバをシステムにインストールし、動作確認をします。 それから、次のうちのいずれかのインストール形式を選択します。
MSI インストーラを実行し、インストールウィザードの指示に従います。 まず最初に設定するウェブサーバを選択し、 それに伴って必要となる設定を行います。
次に、さまざまな機能や拡張モジュールの中から インストールして有効にしたいものを選択します。 各項目のドロップダウンメニューで "Will be installed on local hard drive" を選択することで、その機能をインストールするかどうかを切り替えます。 "Entire feature will be installed on local hard drive" を選択すると、 その機能に関連するすべての機能がインストールされます (たとえば "PDO" に対してこのオプションを選択すると、 すべての PDO ドライバがインストールされます)。
すべての項目をデフォルトでインストールしてしまうのはお勧めしません。 それらの多くは、適切に動作させるためには PHP 以外の外部の依存性を解決する必要があるからです。 その代わりに、いったんインストールした後で コントロールパネルの「プログラムの追加と削除」 で修復モードを使用して拡張モジュールを有効にするようにしましょう。
次に、インストーラは Windows で使用する PHP と php.ini ファイルを設定し、ウェブサーバで PHP を使用できるように設定します。 現在インストーラがサポートしているのは IIS、 Apache、Xitami および Sambar Server のみです。 それ以外のウェブサーバを使用する場合は、自分で設定する必要があります。
このインストーラはサイレンとモードもサポートしています。 このモードは、システム管理者が簡単に PHP 環境を構築する際に便利です。 サイレントモードは、次のようにして使用します。
msiexec.exe /i php-VERSION-win32-install.msi /q
インストール先ディレクトリを設定するには、インストール時のパラメータとして指定します。 例えば、e:\php にインストールする場合は次のようになります。
msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php
また、インストールする機能を指定することもできます。例えば、 mysqli 拡張モジュールおよび CGI 実行ファイルをインストールするには次のようにします。
msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli
現在、インストールする機能としてサポートされている項目は次のとおりです。
MainExecutable - php.exe 実行ファイル (PHP 5.2.10/5.3.0 以降は存在しません。デフォルトで含まれるようになりました) ScriptExecutable - php-win.exe 実行ファイル ext_php_* - 各種拡張モジュール (例: MySQL の場合は ext_php_mysql) apache13 - Apache 1.3 モジュール apache20 - Apache 2.0 モジュール apache22 - Apache 2,2 モジュール apacheCGI - Apache CGI 実行ファイル iis4ISAPI - IIS ISAPI モジュール iis4CGI - IIS CGI 実行ファイル iis4FastCGI - IIS CGI 実行ファイル NSAPI - Sun/iPlanet/Netscape サーバモジュール netserve - NetServe Web Server CGI 実行ファイル Xitami - Xitami CGI 実行ファイル Sambar - Sambar Server ISAPI モジュール CGI - php-cgi.exe 実行ファイル PEAR - PEAR インストーラ Manual - CHM 形式の PHP マニュアル
MSI インストーラをコマンドラインから使用する方法の詳細については » http://msdn.microsoft.com/en-us/library/aa367988.aspx を参照ください。
アップグレードの際も、ダブルクリックあるいはコマンドラインから通常どおりインストーラを実行します。 インストーラが現在のインストールオプションを読み取り、 現在インストールされているバージョンを削除してから 同じオプションで PHP をインストールしなおします。 インストールディレクトリのファイルを手動で置き換えるのではなく、 この方法で PHP をアップグレードすることを推奨します。
ここからは、Microsoft Windows に手動で PHP をインストールし、Web サーバを 設定する手順について説明します。
始めに、» http://www.php.net/downloads.php のダウンロードページから zip バイナリアーカイブをダウンロードしてください。
公式に配布されている Microsoft Window 向けの PHP インストーラを含め 多数のオールインワンのインストールキットが存在しますが、 まずは、幾ばくかの時間を割いて独力で PHP をセットアップしてみることをお勧めします。 そうすることで、システムをより理解することができ、PHP 拡張モジュールの インストールも必要に応じて容易にできるようになるでしょう。
注意: 前バージョンから PHP をアップグレードする場合
古いバージョンのマニュアルでは、ini ファイルおよび DLL ファイルをシステムフォルダ (C:\WINDOWS など) へ移動させることを推奨していました。この移動により、インストール手順は簡単になりますが、 アップグレードは面倒になっていました。 新しいバージョンのインストールにあたっては、これら移動させたファイル(システムフォルダ内の php.ini や PHP 関連の DLLなど)をすべて削除することを推奨します。 この時システムを壊さないようにするために、バックアップを確実に行ってください。 古い php.ini は新しい PHP を設定するのに有用です。 本解説で推奨する PHP のインストール方法は、以下の解説に示すとおり、すべての PHP 関連の ファイルをひとつのフォルダにまとめ、システムパスにそのフォルダを登録する方法です。
注意: MDAC 要件
Windows 98/NT4 を使用している場合には、 プラットフォームに合う Microsoft Data Access Components (MDAC) の最新版を 入手してください。» http://msdn.microsoft.com/data/ からダウンロードできます。MDAC が必要な理由は、ODBC が Windows バイナリにビルトインされているためです。
各サーバ特有の設定を行う前に、以下に示すステップを完了させてください。
まず、配布ファイルを適当なフォルダに展開します。PHP 4 の場合は、C:\ がよいでしょう。zip パッケージは php-4.3.7-Win32 のようなフォルダ名で展開されます。 PHP 5 の場合は、PHP 4 のようにフォルダ内に展開されないので、C:\php 内で展開してください。 他の位置に展開することもできますが、空白を含むパス (例:c:\program files\php) にすることはお勧めできません。Web サーバによってはクラッシュを引き起こします。
展開されたフォルダの構造は、PHP 4 と PHP 5 とで異なり、以下のようになります。
例1 PHP 4 パッケージ構造
c:\php | +--cli | | | |-php.exe -- CLI 実行ファイル - コマンドラインでのスクリプト実行専用 | +--dlls -- 拡張モジュールの利用に必要な DLL | | | |-expat.dll | | | |-fdftk.dll | | | |-... | +--extensions -- PHP 拡張モジュールの DLL | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-... | +--mibs -- SNMP 用サポートファイル | +--openssl -- Openssl 用サポートファイル | +--pdf-related -- PDF 用サポートファイル | +--sapi -- SAPI (server module support) DLL | | | |-php4apache.dll | | | |-php4apache2.dll | | | |-... | +--PEAR -- PEAR の初期コピー | | |-go-pear.bat -- PEAR セットアップ用スクリプト | |-... | |-php.exe -- CGI 実行ファイル | |-... | |-php.ini-development -- デフォルトの php.ini 設定 | |-php.ini-production -- 推奨される php.ini 設定 | |-php4ts.dll -- コア PHP DLL | |-...
例2 PHP 5 パッケージ構造
c:\php | +--dev | | | |-php5ts.lib | +--ext -- PHP 拡張モジュールの DLL | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-... | +--extras | | | +--mibs -- SNMP 用サポートファイル | | | +--openssl -- Openssl 用サポートファイル | | | +--pdf-related -- PDF 用サポートファイル | | | |-mime.magic | +--pear -- PEAR の初期コピー | | |-go-pear.bat -- PEAR セットアップ用スクリプト | |-fdftk.dll | |-... | |-php-cgi.exe -- CGI 実行ファイル | |-php-win.exe -- コマンドプロンプトを開かずにスクリプトを実行する | |-php.exe -- CLI 実行ファイル - コマンドラインでのスクリプト実行専用 | |-... | |-php.ini-development -- デフォルトの php.ini 設定 | |-php.ini-production -- 推奨される php.ini 設定 | |-php5activescript.dll | |-php5apache.dll | |-php5apache2.dll | |-... | |-php5ts.dll -- コア PHP DLL | |-...
PHP 4 と PHP 5 とで、相違点もあり、共通点もあります。 双方とも、CGI 実行ファイル、CLI 実行ファイル、およびサーバモジュールがあります。しかし、フォルダや ファイル名が異なります。PHP 4 では、サーバモジュールは、 sapi フォルダ内にありますが、 PHP 5 ではそういったフォルダは無く、PHP を展開したフォルダのルートにあります。 PHP 5 の拡張モジュールが必要とする DLL も、別フォルダ内には納められていません。
注意: PHP 4 では、dll フォルダおよび sapi フォルダ内のすべてのファイルを メインのフォルダ(C:\php など)に 移動してください。
PHP 4 および PHP 5 で提供されているサーバモジュールは以下の通りです。
sapi/php4activescript.dll (php5activescript.dll) - ActiveScript エンジン。Windows アプリケーションに PHP を埋め込むことが可能
sapi/php4apache.dll (php5apache.dll) - Apache 1.3.x モジュール
sapi/php4apache2.dll (php5apache2.dll) - Apache 2.0.x モジュール
sapi/php5apache2_2.dll - Apache 2.2.x モジュール
sapi/php4isapi.dll (php5isapi.dll) - ISAPI モジュール。 IIS 4.0/PWS 4.0 以降を始とした ISAPI 互換サーバ用
sapi/php4nsapi.dll (php5nsapi.dll) - Sun/iPlanet/Netscape 用サーバモジュール
sapi/php4pi3web.dll (PHP 5 では提供なし) - Pi3Web 用サーバモジュール
サーバモジュールは、CGI バイナリと比べ、パフォーマンスが非常に高く、 機能も追加されています。CLI 版は、PHP をコマンドライン用のスクリプトとして 使うためのものです。CLI 版について詳しくは PHP をコマンドラインから使用するの章を参照してください。
SAPI モジュールは、バージョン 4.1 以降、顕著な改善が行われています。 一方、古いシステムにおいては、サーバエラーが発生したり、ASP 等のサーバモジュールが 落ちたりする可能性があります。
CGI バイナリ、CLI バイナリ、およびサーバモジュールのいずれも php4ts.dll (php5ts.dll) を必要とします。 PHP がこのファイルを見つけられるようにする必要があります。 探索順は、以下の通りです。
php.exe のコール元のフォルダ。SAPI モジュールを 使用している場合、WEB サーバのフォルダ (例、 C:\Program Files\Apache Group\Apache2\bin)
Windows の PATH 環境変数に登録されたフォルダ
php4ts.dll / php5ts.dll を有効に するには、[1] Windows のシステムフォルダにコピーする方法、 [2] WEB サーバのフォルダにコピーする方法、[3] PHP フォルダ (C:\php) を PATH 環境変数に登録する方法の3つの選択肢があります。メンテナンスを考慮すると、 3番目の環境変数に登録する方法をとるべきでしょう。こうすれば、将来の PHP の アップグレードが容易になります。PHP フォルダを環境変数に登録する方法に ついては、FAQ を参照して ください (また、コンピュータを再起動することを忘れないでください。 ログオフするだけでは不十分です)。
次のステップは、PHP の設定ファイル php.ini を正しく記述することです。 配布される zip ファイルには php.ini-development と php.ini-production の二つの ini ファイルが含まれています。 パフォーマンスとセキュリティの観点から最適化された初期設定がなされているので、 php.ini-production の使用を推奨します。 php.ini-development から多くの点で変更が行われています。 ini ファイルには詳しくコメントが書かれているので、注意深く読んでみると良いでしょう。 たとえば、display_errors や magic_quotes_gpc が off となっていたりします。 さらに、設定ファイルのセクションもよく読んで 各要素を自ら設定してみてください。 PHP は、デフォルトの ini ファイルの設定できちんと動作するとはいえ、 最高のセキュリティを達成したいならば、自ら手を動かして設定することが最善の方法です。 選んだ ini ファイルを、PHP がアクセスできるフォルダにコピーし、php.ini にリネームしてください。PHP は、設定ファイル の節で述べられている場所から php.ini を探します。
Apache 2 を使用する場合、PHPIniDir ディレクティブを使うのが最も簡単でしょう (Apache 2 へのインストール ページ参照。) 他の場合、PHPRC 環境変数を設定するのが良いでしょう。 詳しい方法については、こちらの FAQ エントリ で解説されています。
注意: Windows NT, 2000, XP または 2003 で NTFS を使用している場合、WEB サーバを 実行するユーザが、php.ini を読める権限があることを確認してください。
以下のステップは、必要に応じて行ってください。
php.ini ファイルを編集し、 doc_root に Web サーバーの ドキュメントルートを設定します(ただし、OmniHTTPd を使用する場合は編集しないこと。) 例えば、以下のように設定します。
doc_root = c:\inetpub // IIS/PWS の場合 doc_root = c:\apache\htdocs // Apache の場合
以上で、Windows への PHP のインストールが完了しました。ついで、 使用する WEB サーバ にあわせて、PHP を利用可能とするための設定を行います。 目次から使用する WEB サーバを選択し、該当するセクションを参照してください。
PHP をウェブサーバ経由で実行するだけでなく、 .BAT スクリプトなどでコマンドラインから実行することもできます。 詳細は Microsoft Windows コマンドラインでの PHP を参照ください。
このセクションでは、ActiveScript で PHP を使用する場合について説明します。
ActiveScript は Windows 独自の SAPI で、PHP スクリプトが Windows Script Host, ASP/ASP.NET, Windows Script Components や Microsoft Scriptlet control といった ActiveScript 互換ホストで実行可能になります。
PHP 5.0.1 の時点で、ActiveScript サポートは » PECL リポジトリに移動されました。 この PECL 拡張モジュールの DLL は、現在存在しません。 Windows でのビルド も参照ください
注意: まず始めに、マニュアルインストールの手順 をお読みください。
PHP をインストールした後、ActiveScript 用の DLL (php5activescript.dll) をダウンロードし、メイン PHP フォルダ (C:\php 等) へ置いてください。
ファイルを設置できたら、システムに DLL を登録します。 (スタートメニューから)コマンドプロンプトを開き、 PHP のフォルダへ移動し(cd C:\php 等とする)、 regsvr32 php5activescript.dll と打ち込むと DLL を登録できます。
ActiveScript が動作しているかテストするには、test.wsf という名前(拡張子名が重要)で新しいファイルを作成し、 以下のようにタイプしてください。
<job xml:id="test">
<script language="PHPScript">
$WScript->Echo("Hello World!");
</script>
</job>
保存した後、ファイルをダブルクリックして、ウインドウに 「Hello World!」 と表示されたら、上手く動作しています。
注意: PHP 4では、エンジンは「ActivePHP」と命名されました。 したがって、PHP 4を使用している場合、「PHPScript」を上記の例における 「ActivePHP」に取り替えるべきです。
注意: ActiveScript では、デフォルトの php.ini ファイルは使われません。 代わって、ロードする .exe ファイルと同じフォルダが探されます。 拡張モジュールを読み込みたい場合は、 php-activescript.ini ファイルを作成し、当該フォルダに 設置すると良いでしょう。
この章では、IIS (Microsoft Internet Information Server) に関する 注意やヒントを取り上げます。
CGI モードで公開したサーバは、いくつかの脆弱性の標的となる可能性があります。 これらの攻撃からサーバを守る方法については、 CGI セキュリティ のセクションを参照してください。
PHP は、CGI バイナリあるいは ISAPI モジュールのいずれかの形式で インストールされていることでしょう。いずれにしても、まず 「マイクロソフトマネージメントコンソール」 (Windows NT 4.0 オプションパック環境では「インターネット サービスマネージャ」、Windows 2000/XP では コントロールパネル=>管理ツールにあります) を起動する必要があります。 次に、Web サーバノード (たいていは「既定の Web サイト」と表示されています) 上で右クリックし、「プロパティ」を選択します。
CGI バイナリを使う場合は、次のようにしてください。
ISAPI モジュールを使う場合、次のようにしてください。
IIS 6 (2003 Server) の場合は IIS マネージャを開き、「Web サービス拡張」に 移動し、「新しい Web サービス拡張を追加」を選択し、たとえば「PHP」などと 拡張名を入力し、「追加」ボタンを押して ISAPI ファイル (php4isapi.dll または php5isapi.dll) あるいは CGI (php.exe または php-cgi.exe) を選択し、「拡張の状態を許可済みに設定する」をチェックして「OK」ボタンを クリックします。
デフォルトのページとして index.php を使用するには 以下のようにします。 (訳注:「既定の Web サイト」のプロパティダイアログで) 「ドキュメント」タブを選択し、「追加」を選択します。そこで index.php と入力し、「OK」をクリックします。 「上に移動」や「下に移動」を使用して順番を調整します。 これは Apache での DirectoryIndex の設定と同じです。
上記の手順を PHP スクリプトに関連づけたい拡張子ごとに繰り返してください。 一般的な拡張子は .php ですが、 古いアプリケーションでは .php3 が必要な場合があります。
CPU 使用率が 100% となる場合は、IIS の設定「ISAPI アプリケーションをキャッシュ」をオフにしてください。