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?


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;
}

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.


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


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;
}

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.