6

我试图从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()

这是怎么回事?

提前致谢!

4

4 回答 4

12

您需要在写入后 rewind($file_handle) 才能读取刚刚写入的内容,因为写入会将文件指针移动到文件末尾

于 2013-04-19T21:53:06.853 回答
3

打电话rewind($file_handle)之前fread()

于 2017-10-06T13:27:12.097 回答
1

在这里找到答案: https ://stackoverflow.com/a/2987330/2271704

我需要在打电话rewind($file_handle)之前先打电话fread()

于 2013-04-19T21:53:40.577 回答
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);
}
于 2013-04-19T21:57:07.280 回答