las operaciones del sistema de archivos no trabajo de mi script PHP; Qué necesito para chmod algo?

StackOverflow https://stackoverflow.com/questions/2113785

  •  22-09-2019
  •  | 
  •  

Pregunta

Estoy teniendo algunos problemas de permisos con mkdir en PHP. Estoy intentando simplemente mover algunos archivos de todo (y crear una carpeta para ponerlos en), pero estoy consiguiendo este error:

mkdir() [function.mkdir]: Permission denied in

En mi viejo sitio, me había fijado mis carpetas a 755 y las cosas parecían bien el trabajo. Es parece como el único momento en que puedo conseguir funciones mkdir o relacionados con el trabajo en este servidor es cuando las carpetas tienen 777 como su modo.

es el navegador web considerados "Otros"? No me siento como dejar mis carpetas en el 777 es una gran idea, ¿verdad?

¿Fue útil?

Solución

Si es necesario crear carpetas en el servidor que a continuación, puede escribir a partir de su navegador web puede que tenga que utilizar al menos 775. Tenga en cuenta que esto no es necesariamente el caso de la creación de archivos. De hecho, es probable que no quiere que sus archivos sean 777 en absoluto.

También puede utilizar comandos de bash dentro del código php si quisiera evitar que su servidor (alias www-data) crear los directorios, pero todavía tendrá que colocar los permisos correctos en las carpetas para permitir www-data a continuación, los archivos de escritura en los directorios.

Do ver sus titularidades. Lo anterior se basa en una carpeta que se está poseído por algún usuario y el grupo propiedad de www-data. También puede intentar establecer la propiedad carpeta a www-data, pero el permiso todavía sería rwx para ese usuario en particular.

Espero que eso no es manera de contorneado.

Los comandos que podrían ayudar a averiguar que está corriendo Apache en el servidor:

#top

buscar algo como:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                          
20610 www-data  20   0 36772  10m 4380 S    4  0.1   0:04.03 apache2 

o

#ps aux | grep "apache"

buscar algo como

www-data 26898  0.0  0.0  34248  4076 ?        S    17:59   0:00 /usr/sbin/apache2 -k start

Otros consejos

El navegador de web no es el objeto considerado como "otros", sino más bien al usuario que el servidor web se ejecuta como, por ejemplo httpd o apache.

Un método común es chown los archivos para establecer el usuario y / o grupo para el usuario del servidor web, permitiendo de ese modo permisos, tales como 755.

Ejemplo:

chown apache:apache ./example/

Esto puede o no ser aplicables, dependiendo del sistema operativo que está ejecutando el servidor web en, usted puede tener otros mecanismos de seguridad que se Interferring con lo que está tratando de hacer. Un claro ejemplo (que me befudled por un tiempo) es el sistema de seguridad de SELinux. Trate de ver si se puede escribir en / tmp. Si no puede buscar otras cuestiones. Como regla general voladura permisos 777 puede dar lugar a agujeros de seguridad.

¿estás seguro de que el problema no reside en la propiedad de carpeta?

chown tal vez es el comando correcto para resolver este problema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top