我正在尝试使用php://memory
从fread()
包装器中读取,但fread()
始终返回false。我的代码已简化:
$file_handle = fopen('php://memory', 'w+'); // Have tried php:temp also.
fwrite($file_handle, 'contents');
$file = fread($file_handle, filesize($file_handle)); // Have also tried 99999 for filesize.
在$file
之后 fread()
始终为假。
发生了什么事?
提前致谢!
答案 0 :(得分:11)
你需要在写完之后倒回($ file_handle)才能阅读你刚写的内容,因为写入会将文件指针移动到文件的末尾
答案 1 :(得分:3)
在rewind($file_handle)
fread()
答案 2 :(得分:1)
在这里找到答案: https://stackoverflow.com/a/2987330/2271704
在致电rewind($file_handle)
之前,我需要致电fread()
。
答案 3 :(得分:0)
你应该得到这个:
警告:filesize()期望参数1为字符串,资源为
int filesize ( string $filename )
- 获取给定文件的大小。
...和第二个:您尚未启用错误报告。
第三个问题是你的指针位于文件的末尾。尝试这样的事情:
error_reporting(E_ALL);
ini_set('display_errors', true);
// ...
rewind($file_handle);
$file = ''; //
while (!feof($file_handle)) {
$file .= fread($file_handle, 8192);
}