👣

PHPの開発環境:PHP Built-in WebServer

2023/06/02に公開

PHPの開発環境

PHPには Built-in WebServer という機能があり、この機能を使えば PHPだけで Webサーバーを起動できます。
https://www.php.net/manual/ja/features.commandline.webserver.php

メリット

  1. 開発環境の構築の手間が省ける
  2. ファイルパーミッションの問題が発生しにくい(プロセスのオーナーは自分のため)

注意点1:中級者向け

Built-in WebServer は、コマンドラインを使ってWebServerを起動するので、パソコン初心者には難しいと思います。

注意点2:本番環境では使えない

ご指摘があったので付記しておきます。(ベテランならまず公式サイトの説明を読んで欲しい😅)
公式のリファレンス・マニュアルのページの最上部に以下のような記載があります。

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

公式の説明にある通り、本番環境では使えませんし、本番環境への利用も推奨しておりません。(なんでそんな解釈をするのかなぁ?)

注意点3:デーモン化オプションはありません

ログアウトしたり、ターミナルを終了すると、Built-in WebServer も終了します。

起動方法

操作は全てコマンドラインで行います。

事前準備

事前準備1:ターミナル(コマンドプロンプト)を起動します

事前準備2:PHPのパスが通っているか確認します

PHPまでのパスが通っているか確認します。

php --version

以下のように返ってくれば成功です。

PHP 8.2.22 (cli) (built: Aug  6 2024 06:33:30) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.22, Copyright (c) Zend Technologies
    with Xdebug v3.3.2, Copyright (c) 2002-2024, by Derick Rethans

バージョンが表示されない場合は、パスが通っていません。
パスが通っていない とは、PHPがインストールされているディレクトリーへのアクセスがショートカットされていないという意味です。
PHPがインストールされている場合は、PHPのフルパスを記述すると解決します。

/usr/bin/php --version

1.ホームディレクトリーに移動する

この記事の例では、ホームディレクトリーに公開ディレクトリーを作成します。

cd

cdは、 Change Directory の略です。
Change Directory する先のディレクトリー名を省略すると、ホームディレクトリーに移動します。

2.Webサーバーで公開するディレクトリーを作成する

この記事では、public_html を公開ディレクトリーにします。
ここは好きなように変えても問題ありません。

mkdir public_html

3.index.phpファイルを公開ディレクトリーに作成する

下のコマンドは、Welcome PHP という文字列を、 public_html/index.php ファイルに書き込んでいます。

echo "Welcome PHP" > public_html/index.php

4.PHP Built-in WebServer を起動する

下のコマンドを入力すると、 public_html をドキュメントルートにして、WebServerが起動します。

  • -S WebServerを起動するオプション。ホスト名とポート番号を指定します
    • localhot ホスト名
    • 8000 ポート番号
  • -t 公開ディレクトリーを指定。指定しないとカレントディレクトリが公開ディレクトリーになる
    • public_html 公開ディレクトリー
php -S localhost:8000 -t public_html

5.WebServerにアクセスする

ブラウザを起動し、http://localhost:8000/index.phpにアクセスします。

"Not Found"と表示される

以下のような画面が表示される場合は、WebServerの起動には成功していますが、ファイル名が指定されていません。URLにファイル名を追加すると表示されます。

http://localhost:8000/

http://localhost:8000/index.php

ドキュメント・ルートの変更

https://zenn.dev/phpbeginners/articles/3f51955c3d72f8
ドキュメント・ルートとは、ドメイン(http://localhost)直下の公開ディレクトリのことです。
-tオプションでドキュメント・ルートにするディレクトリーを指定できます。

ドキュメントルートを変更すると、いくつものサイトを同時に起動することが可能です。
ポート番号を変えるのがポイントです。

php -S localhost:8001 -t ./example.com/
php -S localhost:8002 -t ./example.net/
php -S localhost:8003 -t ./example.org/

Apacheの仮想ホスト設定で挫折して人には良いかもしれません。

フレームワークの起動ができる

ファイル名を指定すると、フレームワークの起動ができます。

index.phpがエントリーポイントの場合

php -S localhost:8000 -t ./index.php

web.phpがエントリーポイントの場合

php -S localhost:8000 -t ./web.php

Discussion