nginx – permissions de Linux cuestión interesante

Me gustaría get algunas respuestas o sugerencias para mi problema.
Así que estoy recibiendo un simple error:

2014/02/16 12:01:43 [error] 7384 # 0: * 1 FastCGI enviado en stderr: "Script principal desconocido" al leer el encabezado de respuesta desde arriba, cliente: 127.0.0.1, server: localhost, request: "GET / HTTP / 1.1 ", en sentido ascendente:" fastcgi: // unix: /var/run/php-fpm.sock: ", host:" localhost "

En primer lugar, mi configuration nginx está bien hecho (para mí – es decir, está funcionando bien). El único problema que tengo es con los permissions de linux a los files / carpetas. No puedo entender una situación en la que estoy. Ok, así que aquí hay alguna información necesaria:

  • mi nginx funciona bien, con PHP y mysql configurado.
  • un usuario utilizado para nginx se denomina " nginx "
  • index index.php index.html index.htm (configuration de nginx para la directiva de índice)

Aquí está mi problema:

Tengo un tree como: / home / user /

home dir es: root: root con 755
user dir es: user: user con 700

Creé un file llamado index.php en /home/user/index.php . Nginx dijo (/var/log/nginx/error.log) que no tengo permissions. Ok, hice " usermod -a nginx -G user " y cambié los permissions para " user " dir a: 750 (así que ahora nginx pertenece al grupo del usuario, y puede leer o ejecutar contenidos del directory del usuario). Ok, esto funciona, pero no de una manera 100%. Si creo ahora un file index.html , o index.htm – nginx funciona en un browser! ¡Guauu! yeah .. ahora quiero crear index.php , para escribir algún código. ¡Auge! El file no fue encontrado. Hmmm, eso es realmente interesante para mí, ¿qué hice mal? El hecho interesante es que, si cambio permissions de usuario dir a: 755 (desde 750 ), nginx ve index.php . Si entiendo correctamente, nginx va primero a través de los permissions " o " en / home dir ( rx ). A continuación, debe ir a " user " dir, y como nginx usuario está en el grupo de usuarios, por lo que nginx puede hacer un próximo paso para utilizar " g " permissions ( usuario / permissions de dir). Pero lo que está haciendo nginx puede ' t ver index.php (y ve index.html y .htm)?

Ok, tal vez mi conocimiento tiene algunos errores, pero tengo que preguntar, ¿por qué sucede?

3 Solutions collect form web for “nginx – permissions de Linux cuestión interesante”

Bueno, la pregunta es ¿cuáles son sus permissions de file?

Debido a que está ejecutando el php como un cgi, es probable que necesite el a + x para el grupo en los files .php, que probablemente no tiene int normal caso. Y no lo hace para mostrar el .html, que obviamente sólo se lee, no se ejecuta.

Quería responder más en Stackoverflow, pero su pregunta fue cerrada a rápido, me alegro de que lo movió aquí.

Primary script unknown es reportado por php-fpm y casi siempre es un problema con la ruta que pasas (desde nginx) a php-fpm. El process simplemente no puede encontrar ningún file PHP en esa location. En su caso no puede encontrar el file porque el process php-fpm no tiene permissions para leer el file. Eso es correcto, no necesita ningún permiso de ejecución para un script PHP (a less que sea un punto de input de CLI). La razón de esto es simple, scripts PHP no se ejecutan, se analizan (leer).

En general, es una buena idea usar el mismo usuario / grupo para nginx, PHP y php-fpm si es tu server y nadie más está jugando. A continuación, aplique los siguientes permissions (asumiendo /var/www como root para todos los sitios web, lo cual es la mejor práctica imho):

 # Fix user and group for all directories and files. $ chown -R www-data:www-data /var/www # Fix directory permissions (incl. sticky bit for group). $ find /var/www -type d -exec chmod 2770 {} \; # Fix file permissions (incl. sticky bit for group). $ find /var/www -type f -exec chmod 2660 {} \; 

Ahora todo debe estar bien para cualquier cosa que se ejecuta con nginx, PHP y php-fpm y que está por debajo de /var/www .

Intente cambiar los permissions del directory desde donde se sirven sus files a drwx-x-x (que es 711). De esta manera el server web será capaz de "cd" a este directory y leer el file php (siempre que haya leído permissions para ello)

  • ¿Se puede configurar lighttpd para generar sus propias instancias de PHP en Windows7?
  • Cómo get un file .php XHTML validado correctamente
  • Ejecutar PHP en la command-line lanza errores de module Acerca de SNMP
  • elFinder con NFS: No se puede upload "image.jpg"
  • Mantener PHP actualizado en un server IIS de Windows
  • No se muestran los errores de PHP
  • ¿Cómo puedo determinar la causa de una aparente pérdida de memory en mi aplicación web basada en Apache / PHP?
  • ¿Cuándo APC asigna memory?
  • MySQL extensión de PHP no funciona
  • nginx / fpm y PHP_VALUE no funcionan
  • rastrear el origen del command shell
  • Editar MaxRequestLen en FastCGI en IIS (Plesk)
  • PHP mail () function - "de" nombre sobrescrito por Exchange Server
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.