J'essaie de servir PHP avec nginx. J'ai suivi ce tutoriel avec succès auparavant, mais sur un nouveau serveur pour une raison quelconque, l'erreur suivante s'affiche:
nginx: [emerg] open() "/etc/nginx/snippets/fastcgi-php.conf" failed (2: No such file or directory)
En fait, le répertoire snippets
entier de l'installation nginx est manquant.
J'ai installé PHP avec les commandes suivantes:
- Sudo apt-get install -y php7.0-cli php7.0-cgi php-fpm php-mysql
- Sudo systemctl restart php7.0-fpm
J'ai installé le plus récent nginx disponible - et pourtant le répertoire et le fichier ne sont toujours pas présents.
Comment peut-on remédier à cela?
Bonus: Qu'est-ce qui pourrait avoir causé ça?
je pense que cela dépend de la version de Nginx que vous utilisez.
Pour la réponse de Nate, nginx-full
installera 1.10.3 pour vous.
J'utilise Nginx 1.12.2 sur Ubuntu 16.04, avec cette version, il n'a pas sites-enabled
et sites-available
avec elle; et il a également une configuration CGI différente PHP.
Vous pouvez utiliser la solution d'Ulad Kasach ou commencer à utiliser le nouveau moyen.
Voici un document officiel expliquant comment procéder: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/
BTW, dans post ci-dessus, vous devriez également remplacer fastcgi.conf
par fastcgi_params
.
Et ajoutez une autre ligne qui est par défaut d'origine:
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
Ce sont tous de nouveaux changements avec Nginx 1.12.2 :(
La version finale est:
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;
}
A fini par avoir à regarder un fichier de configuration précédent, fonctionnel, et à le répliquer manuellement. Créez simplement le répertoire snippets
et ajoutez un fichier fastcgi-php.conf
avec le contenu suivant:
# 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;
Vous devrez également remplacer la dernière ligne, include fastcgi.conf;
par include fastcgi_params;
.
J'aurais recommandé de créer le fichier fastcgi.conf;
s'il ne s'agissait pas littéralement du même fichier avec la ligne supplémentaire fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
dans le cas de fastcgi.conf
M'avait laissé perplexe un instant aussi. Vous voulez installer le paquet nginx-full
sur ubuntu, par opposition à nginx
. nginx-full
contient les bits qui vous manquaient.
j'utilise
et ma configuration de site ressemble à ceci
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;
}
}
et travaille bien. Je recommande donc de mettre à jour votre fichier config include snippets/fastcgi-php.conf;à
include fastcgi_params;
donc le bloc d'emplacement est
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
J'ESPÈRE QUE ÇA AIDE
en savoir plus sur: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/
merci,