本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。設定ファイル、設定パス、権限を繰り返し確認しましたが、問題はありませんでした。調査を繰り返した結果、ようやく問題が見つかりました。問題と解決策は以下のとおりです。 原因分析 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 詳細なインストールプロセスと構成
序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...
長い間ウェブサイトを作ってきましたが、入力時のnameとidの違いがまだわかりません。最近jQuer...
目次[例を見る]: 【本来の効果は以下の通り】理由は次のとおりです。 【解決】:要約するBootSt...
現在実装されているのは、基本的な使用方法、クリア可能なボックス、パスワードボックスです。参考リンク:...
1. Dockerネットワーク管理1. Dockerコンテナ方式1) Dockerが外部ネットワーク...
jQuery を使用してフェードインとフェードアウト効果を完成させる前に、まずいくつかのコードを理解...
目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...
Nginx を Web サーバーとして使用する際に、次の問題が発生しました。 1. nginxの起動...
1. 新旧ドメイン名のジャンプ適用シナリオ: ドメイン名ベースのリダイレクト。会社の古いドメイン名は...
MySQL は、ネットワーク経由だけでなく、名前付きパイプ経由でも接続できます。MySQL への接続...
【序文】最近、ITOO の試験システムのストレステストを行いたいので、自分のコンピュータに Lin...
Vue プロジェクトで mock.js を使用する開発ツールの選択: Vscode 1. コマンドラ...
この記事では、ユーザーのログイン切り替えを実現するためのVueの具体的なコードを例として紹介します。...
序文:パーティショニングはテーブル設計パターンです。一般的に、テーブル パーティショニングとは、条件...
目次01 コンテナの本質とは何か? 02 Cgroupテクノロジーと名前空間テクノロジーの概要03 ...