En PHP, ¿cómo puedo verificar si un recurso de flujo (o puntero de archivo, manejar, o lo que sea que quiera llamar) es legible o escribible? Por ejemplo, si se encuentra en una situación en la que no sabe nada sobre cómo se abrió o creó el recurso, ¿cómo verifica si es legible? ¿Y cómo verifica si se puede escribir?¿Cómo comprobar si un recurso de secuencia de PHP es legible o escribible?
Según las pruebas que he realizado (solo con archivos de texto normales que usan PHP 5.3.3), fread()
no arroja ningún error en ningún nivel cuando el recurso no es legible. Simplemente devuelve una cadena vacía, pero también lo hace para un archivo vacío. E idealmente, sería mejor tener una verificación que no modifique el recurso en sí. Probar si un recurso es legible tratando de leer de él cambiará la posición del puntero.
Por el contrario, fwrite()
no arroja ningún error en ningún nivel cuando el recurso no se puede escribir. Simplemente devuelve cero. Esto es un poco más útil, porque si estaba tratando de escribir una cierta cantidad de bytes en un archivo y fwrite()
devuelve cero, sabrá que algo salió mal. Pero aún así, este no es un método ideal, porque sería mucho mejor saber si se puede escribir antes de escribir en lugar de tratar de escribir y ver si falla.
Además, idealmente, la comprobación debería funcionar en cualquier tipo de recurso de flujo, no solo en archivos.
¿Esto es posible? ¿Existe algo como esto? No he podido encontrar nada útil. Gracias de antemano por sus respuestas.
Por supuesto, tanto [ ' fread() '] (http://php.net/fread) y [' fwrite() '] (http://php.net/fwrite) devuelve' bool (false) 'en caso de falla según su página de documentación respectiva .... Pero eso no sucede en PHP 5.3.5. –