9 votes

Nginx/FPM/PHP tous les fichiers php disent "Fichier non trouvé".

Je viens d'installer nginx 1.1.13 et php 5.4.0 sur une machine centos 5.8 final 64bit. Nginx et PHP/Fpm fonctionnent, et je peux exécuter php scripts via la ligne de commande ssh, mais dans le navigateur, je continue à obtenir des erreurs 'File not found.' 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;
      }

C'est un copier/coller direct de mes autres serveurs, où cela fonctionne bien avec cette configuration (mais ils utilisent des versions plus anciennes de php/fpm).

Pourquoi est-ce que je reçois ces erreurs ?

1 votes

C'est pas grave, c'est réglé. C'était un stupide problème de permissions.

18voto

Matthew Clark Points 11

Mettez "include fastcgi_params ;" avant toutes les lignes "fastcgi_param *", "include 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;
}

3 votes

Mec, j'ai perdu 4 heures sur ça et ta réponse m'a aidé.

0 votes

J'ai essayé de surmonter ce problème depuis hier. Votre réponse m'a beaucoup aidé ! Merci ! !!

1 votes

Comment faire sans coder le chemin en dur ? Les variables $document_root ne semblent pas fonctionner ?

4voto

miog Points 31

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

Ce que j'ai fait pour résoudre ce problème a été de vérifier l'utilisateur qui exécute nginx, php-fpm et de vérifier leurs autorisations pour accéder au dossier où se trouve la racine. Il s'agit par défaut de 'www-data'.

mais vous pouvez le découvrir en utilisant le ps aux | grep php-fpm y ps aux | grep nginx des commandes.

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

0 votes

Merci pour l'indice. J'ai essayé d'héberger mes projets au plus profond de mon répertoire Dropbox, qui avait des autorisations de 700 par défaut. Changer la permission de Dropbox à 755 a résolu le problème.

0 votes

C'était aussi mon problème. Je redémarrais nginx après avoir ajouté www-data dans le bon groupe, mais a oublié de redémarrer php8.1-fpm . Merci !

1voto

Xosofox Points 197

J'ai eu le même problème, et pour moi, il s'agissait d'une directive "root" inexistante ou mal configurée dans la configuration du serveur nginx.

1voto

alan Points 585

J'utilise une telle configuration, j'espère qu'elle pourra vous aider. Elle fonctionne sous OS X. Pour ma part, 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;
}

0voto

Je résous ce problème en changeant l'utilisateur et le groupe pour l'utilisateur et le groupe actuels dans le fichier php-fpm.d/www.conf.

Par défaut, l'utilisateur et le groupe sont 'nginx', modifiez-les à l'adresse .....

J'espère que cela vous aidera

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X