我使用PHP的文件下載頁面。這裏的問題代碼片段:本地測試的時候,但部署到現場服務器後,瀏覽器返回一個「找不到網頁」的錯誤PHP下載頁面:file_exists()返回true,但瀏覽器返回「找不到網頁」
if (file_exists($attachment_location)) {
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Cache-Control: public"); // needed for i.e.
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length:".filesize($attachment_location));
header("Content-Disposition: attachment; filename=file.zip");
readfile($attachment_location);
die("Hooray");
}
else {
die("Error: File not found.");
}
此代碼工作絕對沒問題。我認爲這可能是一個.htaccess問題,但活動服務器上的所有.htaccess文件與其本地對應文件完全相同。我的下一個猜測是實時服務器的PHP配置,但我不知道PHP設置可能會導致此行爲。
的file_exists()函數總是返回true - 我檢查這個活的服務器上,它總是正確地拿起文件,它的大小等,所以它確實有該文件的句柄。它只是不會執行下載!
主要場地是一個WordPress網站,但是這個代碼是不是一個WordPress頁面的一部分 - 它在網站根目錄內一個獨立的目錄。
UPDATE:is_file()和is_readable()都爲文件返回true,所以這不是問題。導致問題的具體行是:
readfile($attachment_location)
一切都一直持續到這一點是超級快樂。
嘗試呼應的文件路徑,看看是否有在您的Live服務器的任何可疑 –
也許你已經配置了討論您的apache sites-available config,拒絕用戶訪問。 PHP可能能夠看到該文件,但不能看到用戶。 – JorgeeFG
如果file_exists()總是返回true,那麼執行「else」代碼路徑是不可能的。 –