所以给定这个简单的示例:
<?php
$memory = fopen('php://memory', 'r+');
fwrite($memory, 'asdf', 4);
$value = fread($memory, 3);
var_dump($value);
我期望$value
包含字符串"asd"
,但我得到一个空字符串。这个示例是否有明显的需要更改?我的期望不正确吗?如果$value
确实应该包含"asd"
可能导致这种情况发生的是什么(也许是configuration/php.ini问题)?
由于流的内部指针在编写数据后处于索引4,因此您需要fseek
回到流的开头:
// fwrite
fseek($memory, 0); // same as rewind($memory);
// fread
另外,这也可以起作用(基本上是fseek($memory, 0);
):
rewind($memory);