次のサンプルコードがあります
<?php
`echo test > /tmp/test.txt`;
$f=fopen("/tmp/test.txt","w+");
`rm /tmp/test.txt`;
var_dump(fwrite($f,"test"));
fclose($f);
file_get_contents("/tmp/test.txt");
ファイルを作成し、それへのポインタを開き、ファイルを削除してから書き込みを試みます。データが書き込まれないため、fwrite が false または 0 を返すことを期待しますが、次の出力が生成されます。
int(4)
Warning: file_get_contents(/tmp/test.txt): failed to open stream: No such file or directory in /Stuff/tmp/test3 on line 7
したがって、fwrite は明らかに成功しますが、file_get_contents は期待どおりに失敗します。
fwrite が書き込まれるバイト数を返すのは予期される動作ですか? その場合、書き込みが本当に成功したかどうかをテストするにはどうすればよいですか?
これはphp 5.3.3です