本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。設定ファイル、設定パス、権限を繰り返し確認しましたが、問題はありませんでした。調査を繰り返した結果、ようやく問題が見つかりました。問題と解決策は以下のとおりです。 原因分析 GitHub からオープンソースの tp5 プロジェクトをダウンロードしましたが、以前はローカル Web サイトが問題なく動作していました。しかし、このオープンソース プロジェクトをインストールした後、他のローカル Web サイトにアクセスできないことがわかりました。アクセス時に入力ファイルが指定されていないというエラーが発生します。インターネットでも解決策を探しましたが、どれもうまくいきませんでした。このエラーは少し奇妙であるようです。 何度も試行した後、コンピューターを再起動すると問題は解決しました。ただし、ダウンロードした tp5 オープンソース プロジェクトを再度実行すると、他の Web サイトで「入力ファイルが指定されていません」というエラーが表示され、この 1 つの Web サイトだけが問題なく実行されました。 これに基づいて、オープンソース プロジェクトの nginx 構成ファイルにエラーが特定されました。設定ファイルを見てみましょう: サーバー{ 聞く 80; サーバー名 local.test.com; access_log /data/wwwlogs/local.test.com.log を結合します。 error_log /data/wwwlogs/local.test.com_error.log エラー; インデックス index.html index.htm index.php; ルート /data/php/test; add_header X-Powered-Host $hostname; fastcgi_hide_header X-Powered-By; if (!-e $request_filename) { 最後に ^/(.+?\.php)/?(.*)$ /$1/$2 を書き換えます。 最後に ^/(.*)$ /index.php/$1 を書き換えます。 } 場所 ~ \.php($|/){ fastcgi_index インデックス.php; 127.0.0.1:9000; をデフォルトとして設定します。 fastcgi_params を含めます。 $real_script_name を $fastcgi_script_name に設定します。 $real_script_name ~ "^(.+?\.php)(/.+)$") の場合 { $real_script_name を $1 に設定します。 } fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/; } 場所 ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { access_log オフ; error_log オフ; 有効期限は30日です。 } 場所 ~ .*\.(js|css)?$ { access_log オフ; error_log オフ; 12時間で期限切れになります。 } 上記の構成では、残りは従来の構成です。 CGI を使用するためです。 fastcgi パラメータに、お気づきの行があります。 fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/; それでおしまい。この文の主な機能は、クロスサイトを防ぐために fastcgi の操作可能なディレクトリを設定し、open_basedir をこのプロジェクトのディレクトリと /tmp/ および /proc/ に制限することです。 問題解決 先ほど、設定された fastcgi 構成にクロスサイトを防止するための追加のステートメントがあると述べました。そして、この文は実際には fastcgi 全体のパラメータに影響します。私の他の Web サイトのパスは /data/php/xxx/ のようなディレクトリですが、このオープン ソース プロジェクトの /data/php/test/ ディレクトリにはないため、fastcgi は見つかりません。 オンライン展開の推奨事項 それで、この文を使うべきでしょうか、それとも使わないべきでしょうか?もちろんオンライン環境でも可能です。オンライン プロジェクトのデプロイメントでは、open_basedir で $document_root などの変数を使用しないことが最善です。オンライン サーバーに複数のプロジェクトがある場合、すべてのプロジェクトを統合されたディレクトリに配置できます。たとえば、私のオンライン ディレクトリは、他の Web サイトが配置されている wwwroot です。例えば、/wwwroot/test1 /wwwroot/test2のように設定できます。 fastcgi_param PHP_VALUE open_basedir=/wwwroot/:/tmp/:/proc/; 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL zip アーカイブ バージョン (5.7.19) の詳細なインストール チュートリアル
>>: mysql5.7.19 zip 詳細なインストールプロセスと構成
ユニークな「About」ページ自分を他の人たちと差別化する素晴らしい方法は、本当にユニークな自己紹介...
この記事では、ネイティブ JS で実装された特殊効果メッセージ ボックスを紹介します。効果は次のとお...
この記事では、JavaScriptのランダムロールコールテーブルの具体的なコードを参考までに紹介しま...
目次トランザクション分離レベルファントムリーディングとは何ですか?ファントムリードを排除する方法要約...
レンガを移動するプロセスでは、さまざまな環境および構成の問題があり、毎回異なるエラーが発生します。 ...
序文タイトルを見ると、誰もが「Debian 9 に MySQL をインストールするにはどうすればいい...
1. テーブルを作成する<br /> まず、2 つのテーブル (users テーブルと...
以下は、B+ ツリーのデータ構造と実験結果からの推測に基づいた私の判断です。間違いがあればご指摘くだ...
Excel のエクスポートは、docker 環境では常に失敗します。最も直接的な原因は、中国語フォン...
1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...
データのバックアップ操作は非常に簡単です。次のコマンドを実行します。 docker run --vo...
この記事では、Docker で新しいイメージを手動で構築する方法を紹介し、皆さんと共有します。詳細は...
dig - DNS ルックアップ ユーティリティドメイン名のアクセス障害が発生した場合、ドメイン名の...
目次1. インラインスタイル2. インポート方法を使用する3.cssモジュールのエクスポート4. ス...
日常の運用・保守作業では、nginx サービスが頻繁に使用され、nginx の高同時実行性によって生...