[PHP] 浦島太郎


FedCM絡みで久々にPHPを触る。
何故、PHPなのかと言うと、さくらのレンタルサーバーを利用しているからに過ぎない。
VPSやクラウドであれば、Node.jsのAPIサーバーか、Azure Functionsのようなもので良い。
態々、APIサーバーを新しく作るのにPHPを使おうとは思わない。
色々拡張されてはいるが、時代に合わない技術だと思っている。
PHP系のフレームワークなんて興味ない。

ところで、RHELでApacheのmod_phpが非推奨になっていた。8でデフォルトから外し、9で廃止。
php-fpmが推奨らしい。

10.10. 動的プログラミング言語、Web サーバー、およびデータベースサーバー | Red Hat Product Documentation

RHELと言えど、Linuxディストリビューションの一つに過ぎない。
ApacheはFreeBSDでも動くし、別にRHELが業界標準ではない。

FastCGIは常駐プロセスを利用したAPIサーバー化に近い手法なので、レンタルサーバーでは禁止しているところもあり。
少なくとも、さくらのレンタルサーバーでは使えない。Xserverなら使えるらしいが。

それはともかく、開発環境を構築し始める。
PHPはDocker Hubにオフィシャルイメージがあるので、それにcomposerも含めてDev Containers化したものを用意してある。
今時、ご丁寧に手順書通りに同じ作業を繰り返すのは非効率な人間のすることなので、そんなことはせず、当たり前のようにコード化。
Docker ComposeでMySQLとApacheも構成に加えて…と用意している矢先。
公式ドキュメントから察するとmod_phpの件もあり、LAMPではなくLEMPが今のスタイルらしい。
Apache = A、Nginx = Eだそうで。
Nginxはエンジンエックスと読むが、単語にEは入っていない。意味不明な略し方。
もういいから略すなと言いたい。

PHP、4や5あたりで使っていたが、今は8。
開発用の簡易サーバーも用意されていた。
手元で開発するだけなら、Apache/Nginxは要らんね。
Node.jsなどのノリで開発できそう。

ルートにしたいディレクトリに移動し、下記だけでよい。

php -S 127.0.0.1:8000

環境次第では、localhostは名前解決でハマることもあるので、127.0.0.1を使った方がよいと思う。
localhostにしていたせいで、VSCodeのポートフォワードがうまく動かなかった。
Win + VS Code -> Linux -> Container の接続パターン。

PHP: ビルトインウェブサーバー – Manual

そして、名前空間もサポートしていた。
use推奨らしいので、require_onceは極力外し始める。
ただ、PHPの名前空間はディレクトリ名の大文字小文字までしっかり見ているらしく、useで参照できずに少しハマった。
Linuxは問題なく変更できるので良いが、Windows 10より前は作成済みのディレクトリ名の大文字小文字を変えただけでは、変更されなかった記憶。
一度、別名にして、さらに変更しないと駄目で面倒だった。
来年にはWindows 10も延長サポート終了の話があるので、今は問題にならないと思うが。

たまに小売店でWin XPや7を見ることがあるが、見なかったことに。