php wont cancellare 775 dir chmod
-
01-10-2019 - |
Domanda
Guida OK a capire questo.
Ho 2 utenti nel mio sistema Linux che sono entrambi parte di "web-users" del gruppo.
Una è www-dati utilizzati dal server web e php-cgi Uno è il mio ftp-user
quando ho caricare i file via ftp sono impostati a 775 per dirs e 664 per i file, quando si esegue uno script sul server (in modo stesso gruppo come l'utente ftp) per eliminare tale directory e file all'interno: unlink per file di Works ok, ma il permesso comando rmdir non funziona ritorno negato !? E sì la directory viene eliminato dopo lo svuotamento.
Perché è che 775 significa che l'utente del gruppo può eliminarlo proprio come 664 per i file.
Grazie!
Soluzione
Si potrebbe verificare la permissions
del parent
che contiene la directory si sta cercando di eliminare.
Mi è stato l'eliminazione di alcune directory di script generati all'inizio di questa settimana e anche con i loro permessi impostati su 777
, ero ancora ricevendo "Autorizzazione negata" fino a quando mi sono dato Write
l'accesso alla directory parent
.
Altri suggerimenti
ho incontrato lo stesso problema prima e il mio codice sembrava di seguito:
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);
}
}
Io stesso pensato che fosse un'edizione di permesso, ma si è scoperto che ho solo bisogno di chiamata closedir
prima rmdir
-ing. Quindi:
closedir($dh);
rmdir($dir);
Forse il tuo problema è simile alla mia?
Non è possibile utilizzare rmdir () su una directory che contiene i file. La directory deve essere vuoto prima di utilizzare rmdir () per cancellarlo.