Viele Benutzer fallen in diesen Thread und erwarten, eine Lösung für leere Seiten zu finden, die bei Verwendung von nginx + php-fpm angezeigt werden. Ich bin einer von ihnen. Dies ist eine Zusammenfassung dessen, was ich getan habe, nachdem ich viele der Antworten hier und meine eigenen Untersuchungen gelesen hatte (aktualisiert auf php7.2):
1) Öffnen /etc/php/7.2/fpm/pool.d/www.conf
und überprüfen Sie den Wert des Parameters listen
.
listen = /var/run/php/php7.2-fpm.sock
2) Der Parameter listen
sollte mit dem fastcgi_pass
Parameter in Ihrer Site-Konfigurationsdatei übereinstimmen (i, e :) /etc/nginx/sites-enabled/default
.
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) Überprüfen Sie, ob die Datei tatsächlich vorhanden ist:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) Wenn es nicht existiert, bedeutet dies , dass php7.2-fpm nicht ausgeführt wird. Sie müssen es daher neu starten:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
In Bezug auf den location
Abschnitt in /etc/nginx/sites-enabled/default
:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
Überprüfen Sie, ob die Datei snippets/fastcgi-php.conf
am Speicherort vorhanden ist /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
Diese Datei enthält eine Liste der Variablendefinitionen, die für php7.2-fpm erforderlich sind. Die Variablen werden direkt oder durch Einschließen einer getrennten Datei definiert.
include fastcgi.conf;
Diese Datei befindet sich unter /etc/nginx/fastcgi.conf
und sieht aus wie folgt :
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginx enthält zwei mögliche Parameterdateien: fastcgi_params und fastcgi.conf . Der Unterschied zwischen beiden ist die Definition der Variablen SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Um es kurz zu machen, fastcgi.conf sollte immer funktionieren. Wenn Sie aus irgendeinem Grund fastcgi_params verwenden , sollten Sie Folgendes definieren SCRIPT_FILENAME
:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Laden Sie nun die Nginx-Konfiguration neu:
$ sudo nginx -s reload
Und überprüfen Sie, ob eine PHP-Datei korrekt angezeigt wird. Zum Beispiel:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
Wo /var/www/html
ist der Pfad zum Dokumentstamm?
Wenn trotz alledem immer noch eine leere Datei angezeigt wird, stellen Sie sicher, dass php.ini
diese short_open_tag
aktiviert ist (wenn Sie eine PHP-Seite mit kurzen Tags testen).