我一直强烈建议使用XSendfile,因为我们服务的服务器上的文件非常大。服务器正在运行Cpanel。之前我们使用的是直接下载的脚本,在某些浏览器中也不能很好地工作。希望用XSendfile一箭双雕。XSendfile无法正常工作 - PHP,Apache,Cpanel
好吧,我们的主机在我们的服务器上启用了Xsendfile。我写了一个快速测试脚本:
$file = "/home/deli/central/testfile.doc";
header("X-Sendfile: $file");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
exit;
当我运行这个,我得到下载提示。但发送的文件始终为0kb。
有点研究,似乎你需要在apache配置文件或htaccess文件中设置各种东西。我还被告知将它添加到apache配置文件并不是一个好主意,否则它可能会在更新时被覆盖。我宁愿在htaccess中使用它,因为我没有直接访问apache配置,我宁愿使用htaccess进行控制。
当然,如果我能得到它的工作。
所以,我已经添加了以下到htaccess文件:
XSendFile上 XSendFilePath /家庭/熟食店/中央 XSendFileAllowAbove在
(相对路径从脚本到中央文件目录是../../deli/central)
如果我将这些行添加到htaccess中,并将其放入public_html目录(与测试脚本相同的目录),然后运行测试脚本时, 500错误。快速浏览一下错误日志显示:
/home/north/public_html/.htaccess:XSendFilePath这里不允许
谁能赐教,以什么我可能是做错了?
ps - 我刚刚读到它在apache配置中执行效率高很多,因此服务器无需抓取并加载所有htaccess文件。不知道这是否属实。
帮助是非常赞赏,这是一个位在该项目:)
PS一个搅局者的我忘了提 - 如果我把在一条直线力下载到脚本,使用相同的$文件路径,文件下载就好了。所以这条路似乎是正确的。
您正尝试从'/ home/deli/...'提供文件,但您的'.htaccess'文件位于不同路径'/ home/north/...'中。你确定正确的用户(运行Apache进程)可以访问'/ home/deli'路径吗? – leftclickben 2013-02-06 03:36:41