PHP readfile返回零长度文件

这很奇怪.

我有一个脚本,通过浏览器将本地zip文件发送给用户.到目前为止,该脚本运行良好,没有任何问题.今天我的同事告诉我脚本正在发送零长度文件.

一些背景信息:

>在脚本出错之前,尚未修改服务器设置
>测试了不同的浏览器(在Chrome / Firefox上相同)
>以前的zip文件(之前工作正常)也是零长度的
>脚本在服务器上创建文件
>文件大小(在调试时回显)是正确的
>尝试将服务器设置和脚本调整为adviced here但没有成功.

更新:

> is_readable()返回1
>文件大小可能在5Mb到100Mb之间变化(不是特定的)
> $zip_file保存文件路径
> $zip_name保存zip名称
>文件实际上是零长度(在文本编辑器中打开它不包含单个字节)
> error_reporting为On(E_ALL)不显示任何内容
>没有标题,浏览器正确显示zip’源’
> Safari说:’0字节?无法解码原始数据的第一个有用(?)症状

有疑问的片段:

if (file_exists($zip_file)) {
    header('Content-type: application/zip');
    header('Content-disposition: filename="' . $zip_name . '"');
    header("Content-length: " . filesize($zip_file));
    readfile($zip_file);
    exit();
}

我怎样才能轻松调试?

提前谢谢,fabrik

解决方法:

http://www.php.net/manual/en/function.readfile.php#102137

It should be noted that in the example:

header('Content-Length: ' . filesize($file));

$file should really be the full path to the file. Otherwise content length will not always be set, often resulting in the dreaded “0 byte file” problem.

上一篇:Dubbo 快速入门 代码示例


下一篇:什么时候该用readfile() , fread(), file_get_contents(), fgets()?