www - you need to grant write permissions for php on the following directory
¿Cómo puedo verificar si un directorio es grabable en PHP? (9)
¿Alguien sabe cómo puedo verificar para ver si un directorio es escribible en PHP?
La función is_writable
no funciona para las carpetas. (editar: funciona. Ver la respuesta aceptada).
De acuerdo con el manual de PHP is_writable debería funcionar bien en los directorios.
He escrito un pequeño script (lo llamo isWritable.php ) que detecta todos los directorios en el mismo directorio en el que está el script y escribe en la página si cada directorio es escribible o no. Espero que esto ayude.
<?php
// isWritable.php detects all directories in the same directory the script is in
// and writes to the page whether each directory is writable or not.
$dirs = array_filter(glob(''*''), ''is_dir'');
foreach ($dirs as $dir) {
if (is_writable($dir)) {
echo $dir.'' is writable.<br>'';
} else {
echo $dir.'' is not writable. Permissions may have to be adjusted.<br>'';
}
}
?>
Puede estar enviando una ruta de archivo completa a la función is_writable()
. is_writable()
devolverá falso si el archivo no existe en el directorio. Debe verificar el directorio con el nombre del archivo eliminado, si este es el caso. Si lo hace, is_writable
le dirá correctamente si el directorio es escribible o no. Si el $file
contiene su ruta de archivo, haga lo siguiente:
$file_directory = dirname($file);
Luego use is_writable($file_directory)
para determinar si la carpeta es escribible.
Espero que esto ayude a alguien.
Sí, funciona para carpetas ...
Devuelve VERDADERO si el nombre de archivo existe y puede escribirse. El argumento de nombre de archivo puede ser un nombre de directorio que le permite verificar si un directorio es escribible.
Según la documentación de is_writable , debería funcionar, pero dijiste "carpeta", por lo que podría tratarse de un problema de Windows . Los comentarios sugieren una solución alternativa .
(Una lectura apresurada anterior me hizo pensar que las barras posteriores eran importantes, pero eso resultó ser específico para este trabajo).
así es como lo hago:
cree un archivo con file_put_contents()
y verifique el valor de retorno, si es positivo (número de bytes escritos), puede continuar y hacer lo que tiene que hacer, si es FALSE, entonces no se puede escribir
$is_writable = file_put_contents(''directory/dummy.txt'', "hello");
if ($is_writable > 0) echo "yes directory it is writable";
else echo "NO directory it is not writable";
luego puedes eliminar el archivo ficticio usando unlink ()
unlink(''directory/dummy.txt'');
este es el código :)
<?php
$newFileName = ''/var/www/your/file.txt'';
if ( ! is_writable(dirname($newFileName))) {
echo dirname($newFileName) . '' must writable!!!'';
} else {
// blah blah blah
}
ser más específico para propietario / grupo / mundo
$dir_writable = substr(sprintf(''%o'', fileperms($folder)), -4) == "0774" ? "true" : "false";
paz...
stat ()
Muy parecido a una estadística del sistema, pero en PHP. Lo que desea verificar es el valor de modo, al igual que lo haría con cualquier otra llamada a stat en otros idiomas (IE C / C ++).