組み込み Web サーバー
PHP 5.4.0 以降、CLI SAPI は組み込み Web サーバーを提供します。
この Web サーバーは開発目的のみに設計されており、運用環境では使用しないでください。
URI -t オプションを使用して明示的なドキュメント ルートを指定しない限り、リクエストは、PHP が起動された現在の作業ディレクトリから処理されます。
URI リクエストでファイルが指定されていない場合は、指定されたディレクトリが返されます。どちらのファイルも存在しない場合は、404 応答コードが返されます。
Web サーバーの起動時にコマンド ラインで PHP ファイルが指定された場合、そのファイルは Web サーバーの「ルーター」スクリプトとして扱われます。スクリプトは各 HTTP リクエストの開始時に実行されます。このスクリプトが FALSE を返した場合、要求されたリソースはそのまま返されます。それ以外の場合、スクリプトの出力はブラウザに返されます。
例 #1 Web サーバーの起動
$ cd ~/public_html$ php -S localhost:8000
ターミナルには次のように表示されます:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011Listening on localhost:8000Document root is /home/me/public_htmlPress Ctrl-C to quit
http://の場合localhost:8000/ および http://localhost:8000/myscript.html ターミナルには次のような内容が表示されます:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011Listening on localhost:8000Document root is /home/me/public_htmlPress Ctrl-C to quit.[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read
例 #2 特定のドキュメントのルート ディレクトリから開始する
$ cd ~/public_html$ php -S localhost:8000 -t foo/
ターミナルには以下が表示されます:
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011Listening on localhost:8000Document root is /home/me/public_html/fooPress Ctrl-C to quit
例 #3 ルータースクリプトの使用
画像のリクエストでは画像が表示されますが、HTML ファイルのリクエストでは「PHP へようこそ」と表示されます
// router.php
if (preg_match('/.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
return false; // リクエストされたリソースをそのまま提供します。
else {
echo "
PHP へようこそ
";
$ php -S localhost:8000 router.php
いくつかの URI リクエストの後、ターミナルには次のようなものが表示されます。 http://php.net/manual/ en/features.commandline.webserver.php