Ubuntu — отсутствует фрагмент fastggi-php.conf в Nginx

Я пытаюсь обслуживать PHP с nginx, я следовал этот урок успешно, но по какой-то причине на новом сервере я получаю следующую ошибку:

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

На самом деле, весь snippets отсутствует каталог установки nginx.

Я установил PHP с помощью следующих команд:

sudo apt-get install -y php7.0-cli php7.0-cgi php-fpm php-mysql

sudo systemctl restart php7.0-fpm

Я установил самый современный доступный nginx, но каталог и файл по-прежнему отсутствуют.

Как это можно исправить?

Бонус: что могло вызвать это?

4

Решение

Я думаю, это зависит от используемой вами версии Nginx.

Для ответа Нейта, nginx-full установит 1.10.3 для вас.

Я использую Nginx 1.12.2 на Ubuntu 16.04, в этой версии он не имеет sites-enabled а также sites-available с этим; и он также имеет другую настройку PHP CGI.

Вы можете использовать решение Ulad Kasach или начать использовать новый способ.

Вот официальный документ о том, как это сделать: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Кстати, в посте выше, вы также должны заменить fastcgi.conf с fastcgi_params,

И добавьте еще одну строку по умолчанию:

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;
}
13

Другие решения

Закончилось тем, что нужно было посмотреть на предыдущий рабочий файл конфигурации и скопировать его вручную. Просто сделал 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; с include fastcgi_params;,

Я бы порекомендовал создать файл fastcgi.conf; если это не был буквально тот же файл с дополнительной строкой fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; в случае fastcgi.conf

4

Меня тоже озадачило на мгновение. Вы хотите установить nginx-full пакет на Ubuntu, в отличие от просто nginx, nginx-full содержит биты, которые вы пропустили.

4

я использую

  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;
в

включить 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/

Спасибо,

1
По вопросам рекламы [email protected]