Pregunta

Aceptar ayuda a entender esto.

Tengo 2 usuarios en el sistema Linux que son parte del grupo de "usuarios de Internet".

uno es www-datos utilizados por el servidor web y php-cgi uno es mi ftp-usuario

cuando subo archivos a través de FTP que se establecen en 775 para directorios y 664 para los archivos, cuando ejecuto un script en el servidor (por lo mismo grupo como el usuario ftp) para eliminar ese directorio y archivos dentro: unlink para archivos de Works bien, pero el permiso comando rmdir no funciona volviendo negó !? Y sí, el directorio se borra después de vaciarse.

¿Por qué es que 775 significa que el usuario del grupo puede eliminarla igual que 664 de los archivos.

Gracias!

¿Fue útil?

Solución

Se puede comprobar el permissions del parent que contiene el directorio que está tratando de eliminar.

Me suprimiendo algunos directorios scripts generados a principios de esta semana y hasta con sus permisos establecidos a 777, yo todavía estaba recibiendo "permiso denegado" hasta que me di Write acceso al directorio parent.

Otros consejos

me encontré con el mismo problema antes y mi código se parecía a continuación:

function recurse_delete_dir($dir) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..') {
                 $child_file = $dir . $file;
                 if (is_dir($child_file)) {
                     recurse_delete_dir($child_file);
                 }
                 else {
                     unlink($child_file);
                 }
            }
        }
        rmdir($dir);
    }
}

Yo mismo pensaba que era problema de permisos, pero resultó que sólo necesitaba closedir llamada antes rmdir-ción. Por lo tanto:

closedir($dh);
rmdir($dir);

Tal vez su problema es similar a la mía?

No se puede usar rmdir () en un directorio que contiene los archivos. El directorio debe estar vacío antes de usar rmdir () para eliminarlo.

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