PHP はスクリプト言語であり、PHP ファイルを分析して実行するには PHP インタープリターが必要です。 Web リクエストを処理する CGI として PHP を使用する場合、PHP を何らかの Web サーバー (最も一般的には Apache または IIS に統合) に組み込む必要があります。これは、PHP を使用する前に、Apache または IIS をインストールし、それらを正しく構成する必要があることを意味します。および PHP 統合パラメータ。この構成は標準化されており、ドキュメントは非常に充実していますが、Apache と PHP の統合をインストールするときに、依然として問題が発生することがよくあります。さらに、単純な PHP 機能をテストしたいだけで、Apache サービスをインストールして開始したくない場合もあります。この目的のために。 。
しかし、公式ドキュメントによると、この組み込み Web サーバーは開発とテスト専用であり、運用環境での使用は推奨されません。このサーバーはリクエストを順番に受け付けて処理するため、リクエストを同時に処理することはできません。
この内蔵 Web サーバーは非常に使いやすく、次のコマンドを実行するだけでアクセスできます。この方法で開始した後、デフォルトの Web サービス ディレクトリは、コマンドが実行される現在のディレクトリになります。現在のディレクトリを使用したくない場合は、-t パラメータを使用して指定する必要があります。
例 #1 Web サーバーを起動します
<ol><li><span><span>$ php -S localhost:8000 </span></span></li></ol>
ターミナル出力情報:
<ol> <li><span><span>$ cd ~/public_html </span></span></li> <li><span>$ php -S localhost:8000 </span></li> </ol>
http://localhost:8000/ および http://localhost:8000/myscript.html アドレスを要求した後、ターミナルは次のような情報を出力します。以下:
<ol> <li><span><span>PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 </span></span></li> <li><span>Listening on localhost:8000 </span></li> <li><span>Document root is /home/me/public_html </span></li> <li><span>Press Ctrl-C to quit </span></li> </ol>
例 #2 Web サーバーの起動時にドキュメントのルート ディレクトリを指定します
<ol> <li><span><span>PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 </span></span></li> <li><span>Listening on localhost:8000 </span></li> <li><span>Document root is /home/me/public_html </span></li> <li><span>Press Ctrl-C to quit. </span></li> <li><span>[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read </span></li> <li><span>[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read </span></li> <li><span>[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read </span></li> <li><span>[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read </span></li> <li><span>[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read </span></li> </ol>
ターミナル表示メッセージ:
<ol> <li><span><span>$ cd ~/public_html </span></span></li> <li><span>$ php -S localhost:8000 -t foo/ </span></li> </ol>
起動コマンド ラインの後に php スクリプト ファイルを追加すると、このファイルが処理されます「ルーター」スクリプトとして。このスクリプトはすべての HTTP リクエストを処理します。このスクリプトが実行時に FALSE を返した場合、要求されたリソースは通常どおり返されます。 FALSE でない場合、このスクリプトによって生成されたコンテンツがブラウザーに表示されます。
例 #3 ルーター スクリプトの使用
この例では、画像のリクエストは対応する画像を返しますが、HTML ファイルのリクエストでは「PHP へようこそ」と表示されます:
<ol> <li><span><span>PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011 </span></span></li> <li><span>Listening on localhost:8000 </span></li> <li><span>Document root is /home/me/public_html/foo </span></li> <li><span>Press Ctrl-C to quit </span></li> </ol>
<ol> <li><span><span><?php </span></span></li><li><span>// router.php </span><span> </span></li><li><span>if</span><span> (preg_match(</span><span>'/\.(?:png|jpg|jpeg|gif)$/'</span><span>, </span><span>$_SERVER</span><span>[</span><span>"REQUEST_URI"</span><span>])) { </span></li><li><span>return</span><span> false; </span><span>// serve the requested resource as-is. </span><span> </span></li><li><span>} </span><span>else</span><span> { </span></li><li><span>echo</span><span> </span><span>"<p>Welcome to PHP</p>"</span><span>; </span></span></li> <li><span>} </span></li> <li><span>?> </span></li> </ol>
例 #4内蔵 Web サーバー
は、プログラムの判断を通じて、内蔵 Web サーバーと本番サーバーの同じ PHP ルーター スクリプトの異なる動作を調整します:
<ol><li><span><span>$ php -S localhost:8000 router.php </span></span></li></ol>
<ol><li><span><span><?php </span></span></li><li><span>// router.php </span><span> </span></li><li><span>if</span><span> (php_sapi_name() == </span><span>'cli-server'</span><span>) { </span></li><li><span>/* route static assets and return false */</span><span> </span></li><li><span>} </span></li><li><span>/* go on with normal index.php operations */</span><span> </span></li><li><span>?> </span></span></li></ol>
この内蔵 Web サーバーは、いくつかの標準 MIME タイプを認識できます。リソース、および拡張子は .css、.gif、.htm、.html、.jpe、.jpeg、.jpg、.js、.png、.svg、および .txt です。 .htm および .svg 拡張子のサポートは、PHP 5.4.4 以降でのみサポートされます。
例 #5 サポートされていないファイル タイプの処理
Web サーバーでサポートされていない MIME ファイル タイプを正しく処理できるようにするには、次の手順を実行します:
<ol><li><span><span>$ php -S localhost:8000 router.php </span></span></li></ol>
<ol><li><span><span><?php </span></span></li><li><span>// router.php </span><span> </span></li><li><span>$path</span><span> = </span><span>pathinfo</span><span>(</span><span>$_SERVER</span><span>[</span><span>"SCRIPT_FILENAME"</span><span>]); </span></li><li><span>if</span><span> (</span><span>$path</span><span>[</span><span>"extension"</span><span>] == </span><span>"ogg"</span><span>) { </span></li><li><span>header(</span><span>"Content-Type: video/ogg"</span><span>); </span></li><li><span>readfile(</span><span>$_SERVER</span><span>[</span><span>"SCRIPT_FILENAME"</span><span>]); </span></li><li><span>} </span></li><li><span>else</span><span> { </span></li><li><span>return</span><span> FALSE; </span></li><li><span>} </span></li><li><span>?> </span></span></li></ol>
内蔵 Web サーバーにリモートでアクセスしたい場合は、起動コマンドを以下に変更されました:
例 #6 この組み込み Web サーバーへのリモート アクセス
<ol><li><span><span>$ php -S localhost:8000 router.php </span></span></li></ol>
したがって、ポート 8000 を介してこの組み込み Web サーバーにリモート アクセスできます
上記では、Web サーバーの内容も含めて、PHP 54 の組み込み Web サーバーを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。