在PHP中,如何检查流资源(或文件指针,句柄或任何你想调用它们的文件)是可读或可写的?例如,如果您遇到了对资源的打开或创建情况一无所知的情况,您如何检查它是否可读?你如何检查它是否可写?如何检查PHP流资源是否可读或可写?
基于我所做的测试(仅使用PHP 5.3.3的常规文本文件),当资源不可读时,fread()
不会在任何级别抛出任何错误。它只是返回一个空字符串,但它也是为一个空文件做的。理想情况下,最好有一个不会修改资源本身的检查。通过尝试读取资源来测试资源是否可读将改变指针的位置。
相反,当资源不可写入时,fwrite()
不会在任何级别抛出任何错误。它只返回零。这稍微更有用,因为如果您试图将一定数量的字节写入文件并且fwrite()
返回零,则说明出现了问题。但是,这仍然不是一个理想的方法,因为在我需要写入它之前知道它是否可写,而不是试图写入它并查看它是否失败会好得多。
此外,理想情况下,检查应适用于任何类型的流资源,而不仅仅是文件。
这可能吗?有这样的事吗?我一直无法找到有用的东西。预先感谢您的答案。
当然,无论[' fread()'](http://php.net/fread)和['fwrite()'](http://php.net/fwrite)根据各自的文档页面返回'bool(false)'失败....但是,这不会发生在PHP 5.3.5。 – 2011-03-14 03:22:57