PHPのプログラミング学習環境編集

PHPは動的なウェブページを構築することを大きく意識したプログラミング言語で、開発用のウェブサーバーを内蔵しています。 このため、特にApache HTTP Server/nginxh2oなどでウェブサーバー環境を構築することなく、プログラミングの学習を開始できます。

実際の運用に開発用の内蔵ウェブサーバーを使うことは、パフォーマスやセキュリティの問題から非推奨ですが、ウェブサーバーとPHP処理系を連携するセットアップ(相応のネットワーク管理とシステム管理者権限とPHPの知識が必要)はハードルを高くしてしまうので、学習の開始には内蔵ウェブサーバーを使うのが良い選択でしょう。

いまの環境にPHPがインストールされているか?編集

いまの環境にPHPがインストールされているか確認しましょう。

コマンドラインから

php -v

を実行します

PHP 8.1.9 (cli) (built: Aug 15 2022 09:39:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.9, Copyright (c), by Zend Technologies
のように表示されていたらPHPはインストールされています。
#内蔵ウェブサーバーを使ってみるに進んでください。

もし

 php: Command not found.
のようの表示されたら、PHPはインストールされていません。
次のような手順でPHPをインストールしてください。

使用するオペレーションシステム編集

PHPは多くのUnixとUnix互換OS、とWindowsのようなUnix非互換OSで動作します。

Windows編集

公式のWindows向けダウンロードページにビルド済みバイナリーが提供されています。

もしあなたが、Microsoft Visual Studio を使っているのであれば、Visual Studio Marketplace から、PHP Tools for Visual Studio 2022をインストールすることで、Visual Studio に統合された、PHP開発環境を使用できます。

もしあなたが、Visual Studio code(vscode)を使っているのであれば、Visual Studio Marketplace から、PHP Tools for Visual Studio Codeをインストールすることで、vscode に統合された、PHP開発環境を使用できます。

macOS編集

PHP は macOS X (10.0.0) から macOS Monterey (12.0.0) までの macOS にバンドルされています。デフォルトのウェブサーバーでPHPを有効にするには、Apacheの設定ファイルhttpd.confの数行をアンコメントする必要がありますが、CGIやCLIはデフォルトで有効になっています(ターミナルプログラムで簡単にアクセスできます)。

macOS Monterey 以降は、標準ではバンドルされていないので、homebrew を使ってインストールするか、ソースコードからビルドします。

brew install php

FreeBSD編集

ports/pkg コレクションに lang/php81 lang/php81-extensions があります。

portmaster でビルドしインストール

# portmaster lang/php81 lang/php81-extensions

pkg でビルド済みバイナリーをインストール

# pkg install lang/php81 lang/php81-extensions

GNU/Linux編集

多くのGNU/Linuxのディストリビューションでは、PHPが標準でインストールされています。

くわしくは、利用中のディストリビューションとパッケージマネージャーのマニュアルを参照してください。

テキストエディター編集

Windows の「メモ帳」(notepad.exe)のようなプレーンテキストの編集できるエディターが必要です。 HTMLの編集ができる環境であれば、そのまま使えます。

内蔵ウェブサーバーを使ってみる編集

内蔵ウェブサーバーは、アプリケーションの開発を支援するために設計されています。また、テスト目的や制御された環境で実行されるアプリケーションのデモにも有用です。このサーバーは、フルスペックのウェブサーバーではありません。公共のネットワークで使用することはできません。

内蔵ウェブサーバーの起動

% mkdir -p ~/public_html
% cd ~/public_html
% php -S localhost:8000
[Sun Dec  4 11:28:00 2022] PHP 8.2.0RC7 Development Server (http://localhost:8000) started
のように起動します。
localhost:8000は、ネットワークからアクセスできないホストにローカルなアドレスのポート8000でウェブブラウザーからのアクセスを待ちます。
localhost0に変えると到達可能な全てのホストからアクセス可能になります。
本来のHTTPのポート 80 は、システム管理者権限がないと開けないので、8000に仮にしました。
ポート8000 が衝突していたら、 8080…8888 のような上のポートに逃げるのが良いでしょう。

終了するには

^C
CTRLを押しながら C をタイプします。

1行だけのプログラムを入力しサーバーを起動します。

echo '<?php phpinfo() ?>' > phpinfo.php
php -S localhost:8000
[Sun Dec  4 11:28:00 2022] PHP 8.2.0RC7 Development Server (http://localhost:8000) started

ここで、http://localhost:8000/phpinfo.phpをウェブブラウザーで開くと、PHPの諸元が表示されます。

ターミナルを見ると

[Sun Dec  4 11:34:22 2022] PHP 8.2.0RC7 Development Server (http://localhost:8000) started
[Sun Dec  4 11:34:36 2022] 153.187.15.4:8864 Accepted
[Sun Dec  4 11:34:36 2022] 153.187.15.4:7852 Accepted
[Sun Dec  4 11:34:36 2022] 153.187.15.4:8864 [200]: GET /phpinfo.php
[Sun Dec  4 11:34:36 2022] 153.187.15.4:8864 Closing
[Sun Dec  4 11:34:42 2022] 153.187.15.4:7852 Closed without sending a request; it was probably just an unused speculative preconnection
[Sun Dec  4 11:34:42 2022] 153.187.15.4:7852 Closing

のように内蔵ウェブサーバーとウェブブラウザーの様子が表示されます。

サーバー停止

^C

コマンドラインから phpinfo.php を実行(先頭五行)。

% php phpinfo.php | head -5 
phpinfo()
PHP Version => 8.2.0RC7

System => FreeBSD localhost 13.1-STABLE FreeBSD 13.1-STABLE #0 6480563d0: Thu Aug 25 19:34:52 JST 2022     root@localhost:/usr/obj/usr/src/amd64.amd64/sys/SV1G amd64
Build Date => Dec  2 2022 13:42:14

おなじコードでも、ウェブサーバーからの実行と、コマンドラインからの実行で出力に違いがありますが、実行そのものはできています。

まとめ
学習のために、内蔵ウェブサーバーを使います
内蔵サーバーは、php -S localhost:8000で起動し、カレントディレクトリーにあるコンテンツが公開されます。
内蔵サーバーは、CTRL-Cで終了します。