wake-up-neo.com

Das fastcgi-php.conf-Snippet von Nginx fehlt

Ich versuche, PHP mit nginx zu bedienen. Ich habe dieses Tutorial schon erfolgreich ausgeführt, aber auf einem neuen Server habe ich aus irgendeinem Grund die folgende Fehlermeldung:

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

Tatsächlich fehlt das gesamte snippets-Verzeichnis der nginx-Installation. 

Ich habe PHP mit den folgenden Befehlen installiert:
- Sudo apt-get install -y php7.0-cli php7.0-cgi php-fpm php-mysql
- Sudo systemctl restart php7.0-fpm 

Ich habe die aktuellste verfügbare Version von Nginx installiert - und dennoch sind das Verzeichnis und die Datei immer noch nicht vorhanden.

Wie kann das behoben werden? 

Bonus: Was könnte das verursacht haben?

4
Ulad Kasach

ich denke, es hängt von der verwendeten Nginx-Version ab.

Für die Antwort von Nate wird nginx-full 1.10.3 für Sie installieren.

Ich verwende Nginx 1.12.2 auf Ubuntu 16.04, mit dieser Version sind sites-enabled und sites-available nicht vorhanden. und es hat auch ein anderes PHP CGI-Setup.

Sie können entweder die Lösung von Ulad Kasach verwenden oder den neuen Weg einschlagen.

Hier ist ein offizielles Dokument für die Vorgehensweise: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Übrigens, in diesem Beitrag sollten Sie auch fastcgi.conf durch fastcgi_params ersetzen.

Und fügen Sie eine weitere Zeile hinzu, die ursprünglich nicht verwendet wird:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

Das sind alles neue Änderungen mit Nginx 1.12.2 :(

Endgültige Version ist:

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
Yang_2333

Am Ende musste eine vorherige, funktionierende Konfigurationsdatei betrachtet und manuell repliziert werden. Einfach das Verzeichnis snippets erstellt und eine fastcgi-php.conf-Datei mit folgendem Inhalt hinzugefügt:

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

Sie müssen auch die letzte Zeile include fastcgi.conf; durch include fastcgi_params; ersetzen. 

Ich hätte empfohlen, die Datei fastcgi.conf; zu erstellen, wenn es sich nicht buchstäblich um dieselbe Datei mit der zusätzlichen Zeile fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; im Fall von fastcgi.conf handelt. 

4
Ulad Kasach

Hatte mich auch für einen Moment gestumpft. Sie möchten das nginx-full-Paket auf ubuntu installieren, anstatt nur nginx. nginx-full enthält die fehlenden Bits.

4
Nate

ich benutze 

  1. nginx/1.4.6
  2. Ubuntu 14.04.5 LTS

und meine Site-Konfiguration sieht so aus 

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

und ich arbeite gut. , also empfehle ich, Ihre config include snippets/fastcgi-php.conf zu aktualisieren; an 

fastcgi_params einschließen;

so ist der Standortblock

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

ICH HOFFE ES HILFT

lesen Sie mehr über: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

vielen Dank,

1
insCode