PHPのビルトインサーバーでdefault-indexが正常に機能しない件

2021年9月15日

テクノロジー

eyecatch 最近では、vagrantやdockerではなく、もっぱらBult-in-web-serverで開発をする、ユゲタです。 これまで、仮想OSを使って開発をしていたんですが、あまりにも、メモリもストレージも圧迫して、 ノートPCのバッテリーにも優しくないという事がわかったので、できるだけシンプルかつ、 本番サーバーでの再現性をできる限り少なくしたいということで、ビルトインサーバーを利用しています。 macであれば、今ではデフォルトでPHPがインストールされているし、Homebrewを使って、他のバージョンのPHPも実装できるので、 サーバーサイドでの特殊な作り込み的な開発でなければ、コレで十分です。 要するにホームページを作る程度であれば、という事ですね。

ビルトインサーバーの問題点

以前にもブログに書いたことがあるので、「ビルトインサーバー」について、わからないという方は、こちらを一読ください。 PHPのbuilt-inモードで軽量なローカル環境の構築 ローカルにドキュメントルートをセットしておいて、あとは、案件別にフォルダを作って、ボクの場合は、仕事や、個人開発をサックサクに進められているんですが、 ある時に、画面が「Not found」になってしまう事象が発生しました。 http://localhost/test.1/ こんな感じで、「test.1」というフォルダ名にして、案件領域を作っていて、通常であれば、その階層内のindex.htmlが表示されるはずなんですが、何故か「Not found」 これは、php.iniなどをデフォルトで使っているだけなので、何かしらセットしなければいけないのか?とか、 やはりapacheやnginxを通して起動をしないといけないのか・・・ などと、悶々と考えていたところ・・・

原因発覚

フォルダ名を変更して、次のようにすると、正常に表示ができた。 http://localhost/test_1/ どうやら、階層内のフォルダ名に、「.(ドット)」を使うと、phpのビルトインサーバー側で、ファイルと勘違いしてしまうようだ。 通常のwebサーバーで、nginxやapacheを使っている場合は、ちゃんとフォルダとして認識するので、問題なく表示ができるのだが、 ビルトインサーバーでは、どうやら、ドットを使ったフォルダ名は、NGというルールにしたほうが賢明のようだ。 もう一つ言うと、できるだけ半角英数字にして、使用する記号は、「-(ハイフン)」「_(アンダースコア)」程度に留めておくことが無難かもしれない。

最後に

今どきのmacには、apacheもデフォルトでインストールされているので、ビルトインサーバーではなく、apacheでphpを使ったほうが、便利じゃね?ということも考えたのだが、 ユゲタの場合は、サーバーは全てnginxで設置しているので、apacheを使って無駄に.htaccessなどを設置するのが、どうしてもイヤなのである。 では、homebrewで、nginxをインスコして使えばええやん、という声もあるかもしれないが、今回の件で、改めて、ローカル環境でもできるだけデフォルトで使ったほうが、 その後のいろいろなトラブルがシンプルに解決するかも・・・というような思考が生まれてきて、 意固地なのかもしれないけど、もっと困ったことが起きるまでは現状維持で行こうと考えてしまいました。 この場合の色々なトラブルというのは、開発ノートPCを買い替えたりした時に起こり得るトラブルの事ですね。 まあ、この開発環境をマネする必要もないので、ご自身に見合った環境構築を行うことをオススメします。 とりあえず、ビルトインサーバーの原因がわかってなによりでした。

このブログを検索

ごあいさつ

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