PHPの開発環境:PHP Built-in WebServer
PHPの開発環境
PHPには Built-in WebServer という機能があり、この機能を使えば PHPだけで Webサーバーを起動できます。
メリット
- 開発環境の構築の手間が省ける
- ファイルパーミッションの問題が発生しにくい(プロセスのオーナーは自分のため)
注意点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
ドキュメント・ルートの変更
ドキュメント・ルートとは、ドメイン(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