今日の午後、友達と一緒に Laravel プロジェクトを開発します。プロジェクトはパートナーによって開発されたため、コピーを自分のコンピューターに複製しましたが、構成後に URL を開くと、「入力ファイルが指定されていません。」というプロンプトが表示されました。404 エラー
まず、プロジェクトのソースコードの問題を疑い、エントリファイルの先頭に次の一文を直接追加しましたが、やはり同じ結果でした。ウェブサイトにアクセスするとエラーが発生しました。
<?php exit(1);
これはプロジェクトのソース コードに問題がないことを説明し、コードの問題を除外します。
私は疑い始めました。それは私自身の環境の問題だったので、私は投げ始めました。プロジェクトを削除して、新しいプロジェクトを開始しましたが、それでも動作しませんでした。これがこのプロジェクトの唯一の問題であることがわかりました。ですから、環境問題ではないと確信しています。
これは環境問題ではなく、環境問題を除外するという意味です。
Baidu で検索しましたが、そうかもしれないと言っている人もいました。 Homestead.yaml に問題がありましたが、注意深くチェックしましたが、何も問題はありませんでした。そこでグーグルで調べてみましたが、正当な理由は見つかりませんでした。
仮想マシン構成の問題のトラブルシューティング
だから、環境の問題でもプログラムの問題でもないと思いました~~~; 最終的にはこう思いました仮想マシンの内部を確認する必要がありますが、最後に ngnix ログにこのエラーが見つかりました。
2019/05/23 12:31:44 [error] 5085#5085: *1 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/vagrant/Code/haopai-git/public/index.php) is not within the allowed path(s): (/www/wwwroot/dev.guooo.top/:/tmp/:/proc/) in Unknown on line 0 PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Unable to open primary script: /home/vagrant/Code/haopai-git/public/index.php (Operation not permitted)" while reading response header from upstream, client: 192.168.10.1, server: hp.hopa.cc, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", host: "hp.hopa.cc"
上記のエラーを見たとき、私もオンラインで探しました。インターネットでは主に ngnix での fastcgi_param の設定の問題について話題になっていましたが、私はそれが問題だとは思いませんでした他のプロジェクトでは問題がなかったのですが、このプロジェクトだけが問題があります。何らかの理由で、「/www/wwwroot/」に気づきました。このフォルダーはコンピューターに存在しないはずなので、プロジェクトに移動してこの文字列を検索し、最終的に .user.ini ファイルでそれを見つけました。このファイルを見てみると、それが彼の問題であることがわかり、このファイルの設定を削除しました。ファイルの内容は次のとおりです。
open_basedir=***********
OK、問題は解決しました。
振り返って考えてみると、実は最初からngnixのログを見ようと考えるべきでした。以前に .user.ini ファイルに触れたことがあるのですが、その時はクロスサイト攻撃を防ぐために使われていたということしか覚えていませんでした。
PHP 5.3.0 以降、PHP はディレクトリごとに .htaccess スタイルの INI ファイルをサポートしています。このようなファイルは CGI/FastCGI SAPI によってのみ処理されます。この機能により、PECL の htscanner 拡張機能は廃止されます。 Apache を使用している場合は、.htaccess ファイルを使用しても同じ効果があります。
PHP は、メインの php.ini に加えて、実行された PHP ファイルが配置されているディレクトリから Web ルート ディレクトリ ($_SERVER['DOCUMENT_ROOT) までの各ディレクトリ内の INI ファイルもスキャンします。 '] 指定された)。実行中の PHP ファイルが Web ルート ディレクトリの外にある場合、そのディレクトリのみがスキャンされます。
.user.ini スタイルの INI ファイルでは、PHP_INI_PERDIR および PHP_INI_USER モードの INI 設定のみが認識されます。
Laravel 関連の技術記事の詳細については、Laravel チュートリアル 列にアクセスして学習してください。
以上が「入力ファイルが指定されていません」という面倒なトラブルシューティング。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。