在PHP中,如何检查流资源(或文件指针、句柄等)是否可读或可写?例如,如果你面临一种情况,在这种情况下你对资源是如何打开或创建的一无所知,你如何检查它是否可读?你如何检查它是否可写?
根据我所做的测试(仅使用PHP 5.3.3和常规文本文件),当资源不可读时,
相反,当资源不可写时,
此外,理想情况下,检查应该适用于任何类型的流资源,而不仅限于文件。
这可能吗?是否存在类似的东西?我找不到任何有用的东西。提前感谢你们的回答。
根据我所做的测试(仅使用PHP 5.3.3和常规文本文件),当资源不可读时,
fread()
不会在任何级别上引发任何错误。它只返回一个空字符串,但对于一个空文件也是如此。理想情况下,最好有一种检查方法,不修改资源本身。尝试从中读取以测试资源是否可读将更改指针的位置。相反,当资源不可写时,
fwrite()
不会在任何级别上引发任何错误。它只返回零。这样稍微有点用处,因为如果你试图向文件写入一定数量的字节,并且 fwrite()
返回零,你就知道出了问题。但仍然不是一种理想的方法,因为最好在需要写入之前知道它是否可写,而不是尝试写入并查看是否失败。此外,理想情况下,检查应该适用于任何类型的流资源,而不仅限于文件。
这可能吗?是否存在类似的东西?我找不到任何有用的东西。提前感谢你们的回答。
fread()
和fwrite()
在失败时都会返回bool(false)
...但是在PHP 5.3.5中并不会发生这种情况。 - Andrew Moore