web-dev-qa-db-ja.com

Nginxのfastcgi-php.confスニペットがありません

私はPHP nginxで、私は このチュートリアル 前に成功しましたが、何らかの理由で新しいサーバーで成功しました:

 nginx: [emerg] open() "/etc/nginx/snippets/fastcgi-php.conf" failed (2: No such file or directory) 

実際、nginxインストールのsnippetsディレクトリ全体が欠落しています。

次のコマンドでPHPをインストールしました:
-Sudo apt-get install -y php7.0-cli php7.0-cgi php-fpm php-mysql
-Sudo systemctl restart php7.0-fpm

利用可能な最新のnginxをインストールしましたが、ディレクトリとファイルはまだ存在していません。

どうすれば修正できますか?

ボーナス:これは何が原因でしたか?

7
Ulad Kasach

使用しているNginxのバージョンに依存すると思います。

ネイトの回答については、nginx-fullは1.10.3をインストールします。

Ubuntu 16.04でNginx 1.12.2を使用していますが、このバージョンではsites-enabledおよびsites-available それと;また、異なるPHP CGIセットアップ。

Ulad Kasachのソリューションを使用するか、新しい方法の使用を開始できます。

これを行うための公式ドキュメントは次のとおりです。 https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

ところで、上記の投稿では、fastcgi.conf with fastcgi_params

そして、元々デフォルトであるもう1行を追加します。

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

これらはすべてNginx 1.12.2の新しい変更です:(

最終バージョン:

location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    include fastcgi_params;                
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
17
Yang_2333

以前の作業中の構成ファイルを確認し、手動で複製する必要が生じました。単にsnippetsディレクトリを作成し、fastcgi-php.conf次の内容のファイル:

# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

また、最後の行を置き換える必要があります、include fastcgi.conf; with include fastcgi_params;

ファイルを作成することをお勧めしますfastcgi.conf;付加的な行を持つ文字通り同じファイルではなかった場合fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; の場合 fastcgi.conf

5
Ulad Kasach

私もしばらく困惑していました。 nginxではなく、nginx-fullパッケージをubuntuにインストールします。 nginx-fullには、欠落していたビットが含まれています。

4
Nate

私は使っている

  1. nginx/1.4.6
  2. Ubuntu 14.04.5 LTS

私のサイト構成は次のようになります

server {
    listen 3010;

    root /usr/share/nginx/docs;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;   

    server_name phpSetup;


    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

そしてうまく働きます。だから、設定を更新することをお勧めしますinclude snippets/fastcgi-php.conf;to

fastcgi_paramsを含める;

そのため、ロケーションブロックは

location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

それが役に立てば幸い

続きを読む: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

おかげで、

2
insCode