在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