ホームページ  >  記事  >  バックエンド開発  >  PHP 5.4 組み込み Web サーバー_PHP チュートリアル

PHP 5.4 組み込み Web サーバー_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 10:58:43880ブラウズ

PHP はスクリプト言語であり、PHP ファイルを分析して実行するには PHP インタープリターが必要です。 Web リクエストを処理する CGI として PHP を使用する場合、PHP を何らかの Web サーバー (最も一般的には Apache または IIS に統合) に組み込む必要があります。これは、PHP を使用する前に、Apache または IIS をインストールし、それらを正しく構成する必要があることを意味します。および PHP 統合パラメータ。この設定は標準化されており、ドキュメントは非常に充実していますが、Apache と PHP の統合をインストールするときに、依然として問題が発生することがよくあります。さらに、単純な PHP 機能をテストしたいだけで、そのために Apache サービスをインストールして開始したくない場合もあります。目的。 。

しかし、公式ドキュメントによると、この組み込み Web サーバーは開発とテスト専用であり、運用環境での使用は推奨されません。このサーバーはリクエストを順番に受け入れて処理するため、リクエストを同時に処理できないためです。

この内蔵 Web サーバーは非常に使いやすく、次のコマンドを実行するだけです:

リーリー
  1. リーリー

これでアクセスできるようになります。この方法で開始した後、デフォルトの Web サービス ディレクトリは、コマンドが実行される現在のディレクトリになります。現在のディレクトリを使用したくない場合は、-t パラメータを使用して指定する必要があります。

例 #1 Web サーバーを起動する

リーリー
  1. リーリー
  2. $ php -S ローカルホスト:8000

端末出力情報:

リーリー
  1. リーリー
  2. ローカルホストで聞いています:8000
  3. ドキュメントルートは/home/me/public_htmlです
  4. 終了するには Ctrl+C を押してください

http://localhost:8000/ および http://localhost:8000/myscript.html アドレスをリクエストした後、ターミナルは次のような情報を出力します。

リーリー
  1. リーリー
  2. ローカルホストで聞いています:8000
  3. ドキュメントルートは/home/me/public_htmlです
  4. Ctrl+C を押して終了します。
  5. [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - 読み取りリクエスト
  6. [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - 読み取りリクエスト
  7. [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - 読み取りリクエスト
  8. [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - 読み取りリクエスト
  9. [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - 読み取りリクエスト
例 #2 Web サーバーの起動時にドキュメントのルート ディレクトリを指定します

リーリー

リーリー
  1. $ php -S localhost:8000 -t foo/
  2. 端末表示情報:
リーリー

リーリー
  1. ローカルホストで聞いています:8000
  2. ドキュメントルートは/home/me/public_html/fooです
  3. 終了するには Ctrl+C を押してください
  4. PHP スクリプト ファイルを起動コマンド ラインに追加すると、このファイルは「ルーター」スクリプトとして扱われます。このスクリプトはすべての HTTP リクエストを処理します。このスクリプトが実行時に FALSE を返した場合、要求されたリソースは通常どおり返されます。 FALSE でない場合、このスクリプトによって生成されたコンテンツがブラウザーに表示されます。

例 #3 ルーター スクリプトの使用

この例では、画像のリクエストは対応する画像を返しますが、HTML ファイルのリクエストには「PHP へようこそ」と表示されます。 リーリー

  1. リーリー
  2. if
  3. (preg_match('/.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) { return
  4. false // 要求されたリソースをそのまま提供します }
  5. else { エコー
  6. PHP へようこそ

    ";  

  7. }  
  8. ?> 

  1. <span><span>$ php -S localhost:8000 router.php </span></span>

例 #4 判断是否是在使用内置web服务器

通过程序判断来调整同一个PHP路由器脚本在内置Web服务器中和在生产服务器中的不同行为:


  1. <span class="comment">// router.php </span><span> </span>
  2. if (php_sapi_name() == 'cli-server') {  
  3. /* route static assets and return false */ 
  4. }  
  5. /* go on with normal index.php operations */ 
  6. ?> 

  1. <span><span>$ php -S localhost:8000 router.php </span></span>

这个内置的web服务器能识别一些标准的MIME类型资源,它们的扩展有:.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg, and .txt。对.htm 和 .svg 扩展到支持是在PHP 5.4.4之后才支持的。

例 #5 处理不支持的文件类型

如果你希望这个Web服务器能够正确的处理不被支持的MIME文件类型,这样做:


  1. <span class="comment">// router.php </span><span> </span>
  2. $path = pathinfo($_SERVER["SCRIPT_FILENAME"]);  
  3. if ($path["extension"] == "ogg") {  
  4. header("Content-Type: video/ogg");  
  5. readfile($_SERVER["SCRIPT_FILENAME"]);  
  6. }  
  7. else {  
  8. return FALSE;  
  9. }  
  10. ?> 

  1. <span><span>$ php -S localhost:8000 router.php </span></span>

如果你希望能远程的访问这个内置的web服务器,你的启动命令需要改成下面这样:

例 #6 远程访问这个内置Web服务器


  1. <span><span>$ php -S 0.0.0.0:8000 </span></span>

这样你就可以通过 8000 端口远程的访问这个内置的web服务器了


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445655.htmlTechArticlePHP是一种脚本语言,它需要PHP解释器来分析运行PHP文件。当把PHP做为CGI服务Web请求时,它需要被嵌入到某种Web服务器里,最常见的是集成到...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。