为什么从我刚刚编写的php://内存包装器中读取失败?

时间:2013-04-19 21:45:04

标签: php

我正在尝试使用php://memoryfread()包装器中读取,但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 个答案:

答案 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为字符串,资源为

那些是the first problem

  

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);
}