Sean Downey
¿Alguien sabe cómo puedo verificar si un directorio se puede escribir en PHP?
La función is_writable
no funciona para carpetas.
Editar: funciona. Ver la respuesta aceptada.
Sí, funciona para carpetas…
Devuelve VERDADERO si el nombre de archivo existe y se puede escribir. El argumento del nombre de archivo puede ser un nombre de directorio que le permita verificar si un directorio es escribible.
-
El truco es que no puedes especificar un expediente que aún no existe dentro de la carpeta que realmente desea probar, solo especifique la carpeta.
– Philfreo
24 de septiembre de 2010 a las 17:33
Irfan EVRENS
este es el codigo 🙂
<?php
$newFileName="/var/www/your/file.txt";
if ( ! is_writable(dirname($newFileName))) {
echo dirname($newFileName) . ' must writable!!!';
} else {
// blah blah blah
}
-
Ah,
dirname($new_file_name)
, eso es más simple que lo que iba a hacer. iba a usarpathinfo($new_file_name,PATHINFO_DIRNAME)
. Gracias.-Buttle Butkus
24 de abril de 2014 a las 7:57
para ser más específico para propietario/grupo/mundo
$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";
paz…
-
Esta función debería mejorarse. En este momento devolvería falso para permisos como
0777
.– Eslava
27 de enero de 2016 a las 13:27
Es posible que esté enviando una ruta de archivo completa al is_writable()
función. is_writable()
devolverá falso si el archivo aún no existe en el directorio. Debe verificar el directorio en sí mismo con el nombre de archivo eliminado, si este es el caso. Si haces eso, is_writable
le dirá correctamente si el directorio es escribible o no. Si $file
contiene la ruta de su archivo, haga esto:
$file_directory = dirname($file);
Entonces usa is_writable($file_directory)
para determinar si se puede escribir en la carpeta.
Espero que esto ayude a alguien.
Quentin
De acuerdo a la documentación para is_writabledebería funcionar, pero dijiste “carpeta”, por lo que podría ser un problema de Windows. Los comentarios sugieren una solución.
(Una lectura apresurada anterior me hizo pensar que las barras diagonales finales eran importantes, pero eso resultó ser específico para este trabajo).
Studocquien
He escrito un pequeño guión (lo llamo esEscribible.php) que detecta todos los directorios en el mismo directorio en el que se encuentra el script y escribe en la página, independientemente de si se puede escribir en cada directorio 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>';
}
}
?>
jason simulacro
estadística()
Muy parecido a una estadística del sistema, pero en PHP. Lo que desea verificar es el valor del modo, como lo haría con cualquier otra llamada a stat en otros idiomas (IE C/C++).