錯誤出現
在對PHPWord生成的.docx文件在對其進行下載的時候出現瞭如圖錯誤:
剛開始對這個問題一頭霧水,突然出現,有的電腦能下載,有的不能;
還以爲是PHP版本的問題;
查看源碼:
// 設置自動進行下載
header("Content-type:application/vnd.ms-word");
header("Content-Disposition:attachment;filename=" . $fileName . ".docx");
header('Cache-Control:max-age=0');
//把phpword的內容輸出到php輸出流裏
$objWrite->save('php://output');
//保存到指定目錄中
$objWrite->save($path.$fileName.".docx");
exit();
我在對其輸出時,還把文件存入(上傳到)了一個固定的路徑$path
下;
在apache中查到了請求日誌(access.log)
::1 - - [01/Oct/2018:19:29:44 +0800] "GET /sport_meeting/public/index/produce_controller/downloadmanual.html HTTP/1.1" 500 61400 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
請求的返回的狀態碼爲500,
500:服務器內部錯誤 服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器端的源代碼出現錯誤時出現。
以爲是版本問題,更換,無果;
以爲是header
的設置問題,無果;
解決
最後發現問題:
由於要上傳到固定路徑$path
,路徑下文件頻繁改變所以在.gitignore
對其設置了忽略;導致遠程git上的倉庫中$path
路徑下文件爲空;導致路徑裏要上傳文件的那個文件夾被默認刪除掉了;
所以$path
不存在了,導致出現下載錯誤。
所以進行上傳操作的時候要對上傳的路徑進行判斷,是否存在該路徑,不然會發生錯誤。
//判斷路徑是否存在,不存在自動生成
if(!file_exists($path))
{
mkdir($path);//生成指定路徑
}