PHP には ビルトインウェブサーバー という簡易的な Web サーバが搭載されている。

Apache や nginx などの Web サーバが無くても、 PHP だけで Web サーバを立ち上げることができる。

ただし、本番環境での使用は推奨されていない。

警告 このウェブサーバーは、アプリケーション開発の支援用として設計されたものです。 テスト用に使ったり、制約のある環境でアプリケーションをデモするために使ったりすることもできるでしょう。 あらゆる機能を兼ね備えたウェブサーバーを目指したものではないので、 公開ネットワーク上で使ってはいけません。

PHP: ビルトインウェブサーバー - Manual

はじめの Web サーバー

ためしに 1つ PHP ファイルを作ってアクセスしてみる。

hello.php ファイル


$ cat hello.php 
<?php
$message = 'hello, world';
?>
<html>
<head>
<title>hello, world</title>
</head>
<body>
<?php echo $message ?>
</body>
</html>

hello.php ファイルを置いたディレクトリで、以下のコマンドを実行。


$ php -S 0.0.0.0:8888

他のターミナルから curl などで http://localhost:8888/hello.php へアクセスすると、 hello.php の結果が出力される。


$ curl http://localhost:8888/hello.php
<html>
<head>
<title>hello, world</title>
</head>
<body>
hello, world</body>
</html>

ルーティング用のスクリプトを設置することも可能

ウェブサーバーの開始時にコマンドラインで PHP ファイルを指定すると、 そのファイルをウェブサーバーの "ルーター" スクリプトとして使います。 このスクリプトは、各 HTTP リクエストの開始時に動きます。このスクリプトが FALSE を返すと、リクエストされたリソースをそのままの形式で返します。 それ以外の場合はスクリプトの出力をブラウザに返します。

PHP: ビルトインウェブサーバー - Manual

スクリプトを置くディレクトリは -t オプションで指定できる

URI リクエストの処理は、PHP を開始した時点の作業ディレクトリから行われます。 -t オプションを使えば、ドキュメントルートを明示的に指定することができます。 URI リクエストにファイルが含まれない場合は、指定したディレクトリにある index.php あるいは index.html を返します。

PHP: ビルトインウェブサーバー - Manual

ref. PHP: ビルトインウェブサーバー - Manual

tags: php

Posted by NI-Lab. (@nilab)