vagrant up後にLaravelのトップページを開くと「No input file specified.」となってしまう問題について
解決するのに結構はまってしまったので情報共有します。
$ vagrant up
vagrant upで仮想OSを起動後、Laravelのトップページ「homestead.test」を開くと・・・。
ブラウザに表示されたのは
No input file specified.
直訳すると
「入力ファイルが指定されていません」
というエラーとなってしまいました。
エラーのログを確認する
まずはログを確認してエラーの原因を探ってみます。
$ vagrant ssh
vagrant sshでVagrantインスタンスにログインします。
ログイン後、/var/log/nginx/内にあるログの中身を確認します。
vagrant@homestead:~$ vim /var/log/nginx/homestead.test-error.log
※homestead.testの部分は各々の環境ごとで異なります。
2021/01/16 05:04:58 [error] 912#912: *1 FastCGI sent in stderr: "Unable to open primary script: /home/vagrant/code/public/index.php (No such file or directory)" while reading response header from upstream, client: 192.168.20.1, server: homestead.test, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", host: "192.168.20.10"
ログを確認すると、
/home/vagrant/code/public/index.php (No such file or directory)
index.phpが見つかりません。というエラーが出ていました。
ん・・・あれれ。
自分の環境では、
/home/vagrant/code/myapp/public/index.php
というディレクトリ構造でLaravelをインストールしたはずなので
確かにパスがおかしいです。
「myapp」がありません。
Homestead.yamlの設定を再確認する
LaravelプロジェクトのルートパスはHomestead.yamlのsites:で指定しています。
そのパスが間違っている可能性を疑い、
「Homestead.yaml」の設定を見直してみます。
--- ip: "192.168.20.10" memory: 2048 cpus: 2 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: C:\Users\yoshi\Laravel to: /home/vagrant/code type: "nfs" sites: - map: homestead.test to: /home/vagrant/code/myapp/public ← この部分 databases: - homestead
設定はあっていました。
ではなぜ、Homestead.yamlで設定したパスが認識されていないのでしょうか。
Homestead.yamlを編集したら再読込が必要!?
Homestead.yamlでの初期設定は
sites: - map: homestead.test to: /home/vagrant/code/public
となっていて、環境構築中のどこかのタイミングで
sites: - map: homestead.test to: /home/vagrant/code/myapp/public
と変更した記憶があります。
てっきり、
$ vagrant up
や
$ vagrant reload
で、最新のHomestead.yamlが読み込まれると思っていたのですが、
調べると、どうやら上記の起動コマンドでは、再読み込みは行われないらしく。
編集した内容も反映されないようです。
ということで、改めて。
以下を実行すると、Homestead.yamlが再読み込みされます。
$ vagrant up --provision
表示されました。
原因が分かったら、こんなことで・・・。と思いますが、
開発にはつきものですね。
コメント