我一直強烈建議使用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