PHPで、ストリームリソース(またはファイルポインタ、ハンドル、またはそれらを呼び出したいもの)が読み取り可能か書き込み可能かを確認するにはどうすればよいですか?たとえば、リソースがどのように開かれたか、または作成されたかについて何も知らない状況に直面した場合、どのようにしてリソースが読み取り可能かどうかを確認しますか?そして、それが書き込み可能かどうかをどのように確認しますか?
私が行ったテスト(PHP 5.3.3を使用した通常のテキストファイルのみ)に基づくとfread()
、リソースが読み取れない場合でも、どのレベルでもエラーはスローされません。空の文字列を返すだけですが、空のファイルに対してもそれを行います。そして理想的には、リソース自体を変更しないチェックを行う方がよいでしょう。リソースからの読み取りを試みてリソースが読み取り可能かどうかをテストすると、ポインターの位置が変更されます。
逆にfwrite()
、リソースが書き込み可能でない場合は、どのレベルでもエラーをスローしません。ゼロを返すだけです。fwrite()
これは、ファイルに特定のバイト数を書き込もうとしてゼロを返す場合に、問題が発生したことがわかっているため、少し便利です。しかし、それでも、これは理想的な方法ではありません。書き込みを試みて失敗するかどうかを確認するよりも、書き込みが必要になる前に書き込み可能かどうかを知る方がはるかに優れているからです。
また、理想的には、チェックはファイルだけでなく、あらゆる種類のストリームリソースで機能する必要があります。
これは可能ですか?このようなものはありますか?役に立つものは何も見つかりませんでした。よろしくお願いします。