我的错误日志因以下两个错误而失去控制
warning feof() expects parameter 1 to be resource
以及
warning fread() expects parameter 1 to be resource
负责的代码位是
<?php
$file = '../upload/files/' . $filex;
header("Content-Disposition: attachment; filename=" . urlencode($file));
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp)) {
echo fread($fp, 65536);
flush(); // this is essential for large downloads
}
fclose($fp);
?>
我用这个代码下载标题,但它现在吓坏了-之前有人问我已经尝试,我尝试谷歌,但仍然不完全理解错误信息。
3条答案
按热度按时间uubf1zoe1#
fopen失败并返回false。false不是资源,因此出现警告。
在将$fp作为类似资源的参数注入之前,最好先测试它:
vyswwuz22#
我最近遇到了这个问题。代码在我的本地环境中运行得很好。但是当它加载到服务器时,我得到了这个主题中讨论的消息。最后,问题是服务器对文件名区分大小写,而我的本地环境不区分大小写。在更正了文件名后,一切都开始工作了。
ua4mk5z43#
在PHP 7中,您现在可以使用效率更高的方法:-
参见http://php.net/manual/en/class.splfileobject.php