将"php://memory"用于 I/O - 无法读回写入的值

  • 本文关键字:php memory 用于 php io
  • 更新时间 :
  • 英文 :


所以给定这个简单的示例:

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

最新更新