web-dev-qa-db-ja.com

Nginx PHPセットアップ:入力ファイルが指定されていません

NginxでこのWebサーバーを継承し、ここで新しい基本的なPHPサイト設定を取得しようとしています。

ここの指示に従いました。 https://Gist.github.com/GhazanfarMir/03bd1f1f770a3834d47274586d46ea62

私は自分のディレクトリにあるファイルだけでHTMLファイルを読み取ることができます。 PHPファイルの場合、ウェブページに次のエラーが表示されます。

入力ファイルが指定されていません。

これを解決する方法がわかりません。私のconfファイルには、PHPおよびルートセクションの構成があります。

location / {
    root      /var/www/mydomain.org/html;
    index     index.html index.htm index.php;
    try_files $uri/index.html $uri.html $uri @app;
}

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $request_filename;
}
4
bb2j3z

「入力ファイルが指定されていません」というエラーメッセージは、ほとんどの場合、SCRIPT_FILENAMEの値がファイルを指していないためです。 location ~ \.php$はドキュメントルートを知っている必要があり、変数$request_filenameはドキュメントルートと現在のURIを連結することによって構築されます。

location /ブロックのドキュメントルートを定義しましたが、location ~ \.php$ブロックは定義していません。通常、これらは同じ値であるため、単一のrootステートメントを周囲のブロックに配置し、値を上書きしないすべてのlocationブロックに継承することができます。

例えば:

root      /var/www/example.org/html;

location / {
    index     index.html index.htm index.php;
    try_files $uri/index.html $uri.html $uri @app;
}

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $request_filename;
}

location @app {
    ...
}

詳細は このドキュメント を参照してください。

1
Richard Smith