PHP/開発環境

出典: フリー教科書『ウィキブックス(Wikibooks)』
< PHP

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

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

実際の運用に開発用の内蔵ウェブサーバーを使うことは、パフォーマンスやセキュリティの問題から非推奨ですが、ウェブサーバーと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でウェブブラウザーからのアクセスを待ちます。
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で終了します。