Nginx / FPM / PHP todos los archivos php dicen 'Archivo no encontrado'.

8

Acabo de instalar nginx 1.1.13 y php 5.4.0 en una máquina centos 5.8 final de 64 bits. Nginx y PHP / Fpm se están ejecutando, y puedo ejecutar scripts php a través de la línea de comandos ssh, pero en el navegador sigo obteniendo 'Archivo no encontrado'. errores en todos mis archivos PHP.

Así es como hago que mi nginx.conf maneje los 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;
      }

Esta es una copia / pegado directo de mis otros servidores, donde funciona bien con esta configuración (pero ejecutan versiones anteriores de php / fpm).

¿Por qué recibo esos errores?

Mr.Boon
fuente
1
No importa, está ordenado. Fue un problema de permisos tonto.
Mr.Boon

Respuestas:

17

Pon "include fastcgi_params;" antes de todas las líneas "fastcgi_param *", "include fastcgi_params;" anula todas las líneas "fastcgi_param *" (consulte el registro de depuración 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
fuente
3
Hombre, he perdido 4 horas y tu respuesta me ayudó.
experto
He intentado superar este problema desde ayer. ¡Tu respuesta me ayudó mucho! ¡¡¡Gracias!!!
Kacper Kołodziej
1
¿Cómo hacemos esto sin codificar el camino? $ document_root vars parece no funcionar?
user1179459
3

Tuve el mismo problema.

Lo que hice para resolver esto fue verificar al usuario que ejecuta nginx, php-fpm y verificar sus permisos para acceder a la carpeta donde está la raíz. Es por defecto 'www-data'.

pero puedes averiguarlo usando los comandos ps aux | grep php-fpmy ps aux | grep nginx.

Debe asegurarse de que la carpeta sea accesible para el usuario que ejecuta estos procesos.

miog
fuente
Gracias por la pista Intenté alojar mis proyectos dentro de mi directorio de Dropbox, que tenía 700 permisos por defecto. Cambiar el permiso de Dropbox a 755 resolvió el problema.
Rodion Baskakov
1

Tuve el mismo problema, y ​​para mí fue una directiva "root" mal configurada / no existente en la configuración del servidor nginx

Xosofox
fuente
1

Yo uso esa configuración, desearía que pudiera ayudarte. Funciona en OS X. En cuanto a mí, la respuesta de @Xosofox funcionó. Escribí mal la versión de nginx 1.6.2 como 1.2.6, de modo que la raíz se convirtió en un directorio no existente.

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
fuente
0

Resuelvo este problema cambiando el usuario y el grupo por el usuario actual: grupo en php-fpm.d / www.conf

Por defecto, el usuario y el grupo es 'nginx', cambie esto ...

Espero que esto ayude

Pedro Vasconcelos
fuente