PHPのbuilt-inモードで軽量なローカル環境の構築

2020年9月10日

テクノロジー

eyecatch ノートPCでWEBサービス開発をしていると、ノートPCが非常に熱くなってしまうことに悩んでいた、ユゲタです。 ノートPCが熱くなるのは、CPUの使いすぎという事なんですが、実際には、Docker環境を常に立ち上げていて、まあまあ複雑なサーバー環境を構築しているのが原因なんですけどね。 でも、MAMPを使っても非常に高熱化したし、VM系の仮装サーバーもアッツアツ状態になる。 夏場は溜まったモンじゃありません。 2020-06-windowsインスパイアのwindowsfx-10-1-b20-04-armを、raspberry-pi-4-model-b-4gbで日本語起

PHPだけでいいのだ

web開発は、LAMP環境として、php+apache+mysqlをセットで起動しないといけないので、mac本体にそのモジュールをbrewなどでインストールしておけば、macのローカル環境構築はできてしまうが、 実は、僕の使っているフレームワークは、phpだけで、データ管理もできて、非常に軽量に動作し、google-insiteでの点数計測をすると、80点オーバーを取得することができるスグレモノで、 これを使うには、phpサーバー環境だけあればOKなんです。 ということで、PHP ver5.4.0から利用可能な「Built-in web-server」機能というのがあることを思い出した。 この機能は、phpがインストールされている端末に任意ポートでのアクセスでphpが動作できるようになる、簡易サーバーにすることができる機能です。 メリットとしては、apacheやnginxなしでも、アクセスによってphpを実行することができます。 ようするに、最低限の機能でphpサーバーを立ち上げて、且つ、他のモジュールを起動しない分、軽量で省電力で軽量という事は、簡単に理解できます。 とりあえず、使ってみてなんぼなので、調査も兼ねて、ビルトインwebサーバーを使ってみることにしました。

Built-in Web-serverの使い方

この機能の実行方法は、PHPがインストールされているmac(pc端末や、サーバー)で、以下のコマンドを実行するだけです。 php -S localhost:8080 -t %root-path phpのcliがlocalhostの8080ポートを監視して、実行するという事がわかります。 そして、フレームワークを立ち上げてみたところ見事無事に実行成功しました。 apacheがなくても、jsファイルやcssファイルも、urlアクセスで取得できていて、これはこれで便利ですね。

80番ポートは使えない

上記コマンドで80番ポートを指定した場合に、エラーが出たので、どうやら権限エラーになるとのことでした。 [Wed Aug 26 09:24:28 2020] Failed to listen on localhost:80 (reason: Permission denied) 8080や8000ポートなど、無難な開発ポート環境で使っても良いんですが、どうしても80番ポートで立ち上げたい時は、以下のように実行しましょう。 php -S 0.0.0.0:80 -t %root-path

errorログの確認方法

そういや、web開発をする時に、nginxのエラーログをデバッグトラッカーとして使っていたんだけど、ビルトインサーバーの場合は、こうしたアクセスやエラーログは、どこかに吐き出されているのだろうか? text.phpを作って、ワザと間違った記述をしてみたところ、ちゃんと、コマンドに表示されていました。 <?php echo "hoge; [Wed Aug 26 10:19:21 2020] 127.0.0.1:53199 [200]: /myntpage/test.php [Wed Aug 26 10:19:32 2020] 127.0.0.1:53245 [200]: /myntpage/test.php - syntax error, unexpected end of file, expecting variable (T_VARIABLE) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in /Users/yugeta/web/myntpage/test.php on line 2 これで、ほぼ問題なく、PHPだけの開発環境として使えることが分かりました。 いや〜、効率・効率! あ、そうそう、今回使っているフレームワークに興味がある人は、コメントなどでお問い合わせください。 ビジネスなどでも、かなり使えるシロモノですよ。

参考

PHP : ビルトインウェブサーバー https://www.php.net/manual/ja/features.commandline.webserver.php

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。