Nginx / FPM / PHP tous les fichiers php disent «Fichier introuvable».

8

je viens d'installer nginx 1.1.13 et php 5.4.0 sur une machine centos 5.8 finale 64 bits. Nginx et PHP / Fpm sont en cours d'exécution, et je peux exécuter des scripts php via la ligne de commande ssh, mais dans le navigateur, je reçois toujours «Fichier introuvable». des erreurs sur tous mes fichiers PHP.

Voici comment mon nginx.conf gère les scripts PHP:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Il s'agit d'un copier / coller direct de mes autres serveurs, où cela fonctionne bien avec cette configuration (mais ils exécutent des versions plus anciennes de php / fpm).

Pourquoi ai-je ces erreurs?

Mr.Boon
la source
1
Tant pis, c'est trié. C'était un problème de permissions stupide.
Mr.Boon

Réponses:

17

Mettez "include fastcgi_params;" avant toutes les lignes "fastcgi_param *", "inclure fastcgi_params;" remplace toutes vos lignes "fastcgi_param *" (voir le journal de débogage de nginx):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}
mingalevme
la source
3
Mec, j'ai perdu 4 heures dessus et ta réponse m'a aidé.
expert
J'ai essayé de surmonter ce problème depuis hier. Votre réponse m'a beaucoup aidé! Je vous remercie!!!
Kacper Kołodziej
1
comment pouvons-nous faire cela sans coder en dur le chemin? $ document_root vars ne semble pas fonctionner?
user1179459
3

J'ai eu le même problème.

Ce que j'ai fait pour résoudre ce problème était de vérifier l'utilisateur exécutant nginx, php-fpm et de vérifier ses autorisations d'accès au dossier où se trouve la racine. C'est par défaut 'www-data'.

mais vous pouvez le découvrir en utilisant les commandes ps aux | grep php-fpmet ps aux | grep nginx.

Vous devez vous assurer que le dossier est accessible à l'utilisateur exécutant ces processus.

miog
la source
Merci pour l'indice. J'ai essayé d'héberger mes projets au plus profond de mon répertoire Dropbox, qui avait 700 autorisations par défaut. Changer l'autorisation Dropbox en 755 a résolu le problème.
Rodion Baskakov
1

J'ai eu le même problème, et pour moi, c'était une mauvaise configuration / directive "racine" inexistante dans la configuration du serveur nginx

Xosofox
la source
1

J'utilise une telle configuration, j'espère que cela pourrait vous aider. Cela fonctionne sous OS X. Quant à moi, la réponse de @Xosofox a fonctionné. J'ai mal saisi la version de nginx 1.6.2 en 1.2.6, de sorte que la racine est devenue un répertoire inexistant.

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}
Hangchen Yu
la source
0

Je résout ce problème en changeant d'utilisateur et de groupe par l'utilisateur actuel: groupe dans php-fpm.d / www.conf

Par défaut, l'utilisateur et le groupe sont 'nginx', changez ceci ....

J'espère que cela t'aides

Pedro Vasconcelos
la source