Sé que es una pregunta muy antigua, pero quería agregar la buena solución con una explicación en profundidad. Tendrá que ejecutar dos sentencias en sistemas tipo Ubuntu y luego funcionará como un encanto.
Los permisos en Linux se pueden representar con tres dígitos. El primer dígito define el permiso del propietario de los archivos. El segundo dígito son los permisos de un grupo específico de usuarios. El tercer dígito define los permisos para todos los usuarios que no son propietarios ni miembros del grupo.
Se supone que el servidor web se ejecuta con una identificación que es miembro del grupo. El servidor web nunca debe ejecutarse con la misma identificación que el propietario de los archivos y directorios. En Ubuntu se ejecuta apache con el id www-data. Esa identificación debe ser un miembro del grupo para el que se especifican los permisos.
Para otorgarle al directorio en el que desea cambiar el contenido de los archivos los derechos adecuados, ejecute la instrucción:
find %DIR% -type d -exec chmod 770 {} \;
. Eso implicaría en la cuestión del OP que los permisos para el directorio% ROOT% / database deberían cambiarse en consecuencia. Por lo tanto, es importante no tener archivos dentro de ese directorio que nunca deberían modificarse o eliminarse. Por lo tanto, es una buena práctica crear un directorio separado para los archivos cuyo contenido debe cambiarse.
Leer permisos (4) para un directorio significa poder recopilar todos los archivos y directorios con sus metadatos dentro de un directorio. Los permisos de escritura (2) dan permiso para cambiar el contenido del directorio. Lo que implica agregar y eliminar archivos, cambiar permisos, etc. El permiso de ejecución (1) significa que tiene derecho a ingresar a ese directorio. Sin este último es imposible profundizar en el directorio. El servidor web necesita permisos de lectura, escritura y ejecución cuando se debe cambiar el contenido de un archivo. Por lo tanto, el grupo necesita el dígito 7.
La segunda declaración está en la cuestión del PO:
find %DOCUMENT_ROOT%/database -type f -exec chmod 760 {} \;
Se requiere poder leer y escribir un documento, pero no es necesario para ejecutar el archivo. El 7 se le da al propietario de los archivos, el 6 al grupo. El servidor web no necesita tener permiso para ejecutar el archivo a fin de cambiar su contenido. Esos permisos de escritura solo deben otorgarse a archivos en ese directorio.
Todos los demás usuarios no deben tener ningún permiso.
Para directorios que no requieren cambiar sus archivos, son suficientes los permisos de grupo de 5. Documentación sobre permisos y algunos ejemplos:
https://wiki.debian.org/Permissions
https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/
php.ini
archivo en busca de algo que pueda denegar el acceso al archivo?