我有一个奇怪的问题,fread拒绝读取超过8192个字节。我知道这是读取缓冲的远程流的预期行为,但这是由PHP脚本创建的本地.zip文件。
代码示例:
$fh = fopen('/path/to/file.zip', 'rb');
$data = fread($fh, 4194304); // 4 MB
echo strlen($data);
输出:8192
文件本身大小为9 mb。
如果我在CLI中运行它,它可以正常工作。
PHP版本为7.1。
我知道为什么会遇到这个问题?
答案 0 :(得分:-1)
根据docs所做的事情:
如果流被读缓冲并且它不代表普通文件, 最多一次读取最多等于块大小的字节数 (通常是8192);取决于先前缓冲的数据, 返回数据的大小可能大于块大小。