2010-02-07 25 views
6

He estado sacando mi cabello durante las últimas 2 horas en esto y estoy seguro de que estoy haciendo algo realmente estúpido.mkdir no funciona en PHP

<?php 
mkdir("blah", 0777); 
?> 

Esto funciona a través de la línea de comandos y se crea la carpeta. Pero lo mismo no funciona cuando trato de ejecutarlo a través del navegador. ¿Algún problema de permisos de archivos?

+0

me quedé atrapado con esto durante mucho tiempo, hth alguien más. si está en SELinux, hay una capa adicional de permisos llamada "Contexto de seguridad" que puede ver con 'ls -alZ'. use algo como 'chcon system_u: object_r: httpd_sys_content_t: s0 public_HTML' – changokun

Respuesta

11

¿Podría ser posible que mientras se ejecuta bajo la línea de comandos, la secuencia de comandos herede los permisos, pero cuando se ejecuta desde el navegador no?

En ese caso, usted desearía que sus permisos de directorio 'escriban' para el grupo.

+4

¡Jaja! 10.000 reputación! ¡Hurra! –

3

Su servidor web (Apache?) Se está ejecutando como es propio usuario, y no tiene permiso para escribir en el directorio que se está ejecutando mkdir en.

Dar permiso del usuario del servidor web para escribir en el directorio por A) haciéndolo propietario, B) agregándolo al grupo si el grupo tiene permiso de escritura, o C) da permiso de escritura a todos (no recomendado para la mayoría de las configuraciones).

+0

Estaba teniendo el mismo problema, ¡resuelto! Creé una carpeta con FTP al principio, cuando el uso de mkdir para crear carpetas dentro no funcionaba. Eliminar la carpeta y asegurarse de que el script lo crea lo resuelve. – Pedro

0

puede probar con el umask, cuando PHP se utiliza como un módulo de servidor, la umask se restaura cuando se completa cada solicitud.

$old = umask(0); 
mkdir($path,0777); 
umask($old);