Con el fin de crear un archivo dentro de la raíz del documento, su proceso de PHP debe tener permisos para escribir en el directorio. Normalmente (pero no siempre) PHP se ejecuta como el mismo usuario con el que se ejecuta el servidor web. El nombre de este usuario variará según los diferentes sistemas. En Ubuntu y Debian, el usuario se llama www-data
, en otros sistemas puede ser solo www
, o apache
, o apache2
. En algunos sistemas, puede ser root
.
Puede averiguar qué usuario ejecuta su PHP examinando el valor del servidor superglobal: $_SERVER['USER']
. phpinfo()
proporciona una manera fácil de ver cosas como esta. Por lo general, el usuario de PHP es el mismo que el usuario del servidor web (pero no siempre).
establecer la propiedad y los permisos del directorio es otro tema completamente diferente, depende del sistema operativo en el que se encuentre, qué acceso y permisos tenga para el servidor, y muchas otras cosas. Si necesita punteros sobre esto, puede start at serverfault.com.
buena suerte.
[editar] Está bien, si usted está runing como apache
, y que está tratando de crear su nuevo directorio en /var/www/blah/mydomain.com/htdocs/
... entonces cuando se ejecuta:
> ls -splad /var/www/blah/mydomain.com/htdocs
que había esperar ver algo como:
4 drwxr-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
hay dos partes interesantes:
drwxr-xr-x
significa: d
= directorio; rwx
= el usuario tiene Leer, Escribir, eXeguir; r-x
= el grupo solo tiene lectura y eXecute; r-x
= todos solo tienen lectura y ejecución.
y apache apache
- el primero es el nombre del usuario que posee el archivo/directorio, el segundo es el nombre del grupo que posee el archivo/directorio.
por lo que si usted vio algo como esto:
4 drwxr-xr-x 2 root apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
lo haría no trabajo porque el directorio es propiedad de root
(no Apache), ya pesar de que se agrupa por apache
, el directorio no está grupo grabable para que no lo corte. En este escenario, simplemente podría agregar permisos de escritura de grupo (chmod g+w /var/www/blah/mydomain.com/htdocs
), y listo.
Otra cosa que puede ver es:
4 drw-r-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
En este caso, la propiedad está bien, pero el directorio no se puede escribir por su propietario. Puede solucionar esto agregando permiso de escritura para el propietario chmod u+w /var/www/blah/mydomain.com/htdocs
.
hay muchas otras variaciones, pero quizás esto ayude.
¿Cuál es el mensaje de error que está generando php? si no está imprimiendo en la secuencia html, estará en el registro del servidor. – Lee
PHP Advertencia: mkdir() [function.mkdir]: Permiso denegado en /var/www/blah/websitename.com/httpdocs/aaa.php en la línea 13 – matthewpavkov
También debo agregar que en este servidor, en la misma cuenta, tengo una instalación completa de Wordpress, que funciona bien (cargar archivos, actualizar complementos, etc.). – matthewpavkov