PHP 5.4.0 以降、PHP には Web サーバーが組み込まれています。これは、PHP アプリケーションをプレビューするために Apache または Nginx が必要だと考えている開発者向けのもう 1 つの隠れた機能です。この組み込み Web サーバーは運用環境では使用しないでください。ただし、ローカル開発には優れたツールです。 Laravel Valet は当初この組み込みサーバーを使用していましたが、バージョン 1.1.0 以降は Caddy に置き換えられました (関連ニュースを参照)。
1.
を起動します。この組み込み Web サーバーは簡単に起動できます。ターミナル (Windows では cmd コマンド ライン) を開き、プロジェクトのルート ディレクトリに入り、次のコマンドを実行します。 >
php -S localhost:8000
ログイン後にコピー
上記のコマンドは新しい PHP Web サーバーを起動します。アドレスは localhost、リスニング ポートは 8000、現在のディレクトリは Web サーバーのルート ディレクトリです。
次に、ブラウザを開いて http://localhost:8000 にアクセスして、アプリケーションをプレビューします。 Web ブラウザでアプリを閲覧すると、各 HTTP リクエストに関する情報が端末の標準出力に記録されるため、アプリが 404 応答または 500 応答をスローしたかどうかを確認できます。同じ LAN 内の別のデバイス (iPad やローカル仮想マシンなど) からこのサーバーにアクセスする必要がある場合、localhost を 0.0.0.0 に変更し、PHP Web サーバーがすべてのインターフェイスでリッスンできるようにします。
Web サーバーを停止するには、ターミナルを閉じるか、Ctrl+C ショートカット キーを押します。
2. 構成
アプリケーションは、多くの場合、専用の PHP 構成ファイルを使用する必要があります。特に、メモリ使用量、ファイルのアップロード、分析、またはバイトコード キャッシュに特別な要件がある場合は、個別に構成する必要があります。 -c オプションを使用すると、PHP 組み込みサーバーで指定された構成ファイルを使用できるようになります。
php -S 0.0.0.0:8000
ログイン後にコピー
3. ルーティング スクリプト
PHP 組み込みサーバーには明らかに次の機能がありません。 Apache および Nginx との統合は、.htaccess ファイルをサポートしていないという点で異なります。そのため、このサーバーは、最も一般的な PHP フレームワークの一般的なフロントエンド コントローラー (転送に使用される単一エントリ ファイル、index.php) を使用することが困難です。すべての HTTP リクエスト、Laravel、Symfony などの現在主流の PHP フレームワークはこれに似ています)。
PHP 組み込みサーバーは、この欠点を補うためにルーティング スクリプトを使用します。結果が false の場合は、このルーティング スクリプトが最初に実行されます。それ以外の場合は、HTTP リクエストが返されます。それ以外の場合は、ルーティング スクリプトの実行結果が HTTP レスポンスボディとして返されます。つまり、ルーティング スクリプトは実際には .htaccess と同じように機能します。
php -S localhost:8000 -c app/config/php.ini
ログイン後にコピー
ルーティング スクリプトの使用方法は非常に簡単です。PHP 組み込みサーバーを起動するときに、この PHP スクリプト ファイルのパスを指定するだけです。
ルーティング スクリプトについては、興味があります。学生は、LaravelValet の基礎となる server.php をダウンロードして学習できます (https://github.com/laravel/valet/blob/master/server.php)。
4. 判定関数
サーバーごとに異なる応答ヘッダーを設定できるように、PHP スクリプトが PHP の組み込み Web サーバーを使用するか、従来の Web サーバーを使用するかを知る必要がある場合があります。 php_sapi_name() 関数を使用して、どの PHP Web サーバーが使用されているかを確認できます。現在のスクリプトが PHP 組み込みサーバーを使用している場合、この関数は文字列 cli-server:
php -S localhost:8000 router.php
ログイン後にコピー
を返します。
PHP の組み込み Web サーバーは運用環境では使用できず、ローカル開発環境でのみ使用できます。これは、Apache や Nginx と比較して多くの欠点があるためです。
パフォーマンスが悪い。一度に処理できるリクエストは 1 つだけであり、他のリクエストはブロックされます。特定のプロセス (データベース クエリ、リモート API 呼び出し) に長時間かかると、Web アプリケーション全体が停止します。
サポートするメディアの種類が減りました (これは PHP 5.5.7 以降で大幅に改善される予定です)。
ルーティング スクリプトは少量の URL 書き換えのみをサポートしており、より高度な URL 書き換えには Apache または Nginx が必要です。