PHP/開発環境
PHPのプログラミング学習環境
編集PHPは、動的なウェブページを構築することを大きく意識したプログラミング言語で、開発用のウェブサーバーを内蔵しています。 そのため、特にApache HTTP Server・nginxやh2oなどでウェブサーバー環境を構築することなく、プログラミングの学習を開始できます。
実際の運用に開発用の内蔵ウェブサーバーを使うことは、パフォーマンスやセキュリティの問題から非推奨ですが、ウェブサーバーとPHP処理系を連携するセットアップ(相応のネットワーク管理とシステム管理者権限とPHPの知識が必要)はハードルを高くしてしまうので、学習の開始には内蔵ウェブサーバーを使うのが良い選択でしょう。
いまの環境にPHPがインストールされているか?
編集いまの環境にPHPがインストールされているか確認しましょう。
コマンドラインから
php -v
を実行します
PHP 8.2.12 (cli) (built: Jan 8 2024 06:21:20) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.12, Copyright (c) Zend Technologies with Zend OPcache v8.2.12, Copyright (c), by Zend Technologies
- のように表示されていたらPHPはインストールされています。
- #内蔵ウェブサーバーを使ってみるに進んでください。
もし
-bash: 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/php82 lang/php82-extensions
pkg でビルド済みバイナリーをインストール
# pkg install lang/php82 lang/php82-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でウェブブラウザーからのアクセスを待ちます。localhost
を0
に変えると到達可能な全てのホストからアクセス可能になります。- 本来の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で終了します。