背景:我在公司開發一個產品Excel導入到數據庫的功能,寫起來挺快的,用phpexcel幾下就寫好了,本地測試挺順的,git push上去,項目負責人部署到測試環境,就出現問題了。具體問題一句話不好說,先上幾張圖片:
問題是這樣,$fileSrc是用來存上傳Excel文件的,用完就刪除了,我在我本機uploads下面新建了個pro目錄用來存,沒問題,但是部署到線上測試環境,忘了建目錄,就出現問題。
問題出現就解決問題吧,可是if(!move_uploaded_file()){}里面的異常怎么不拋出來呢,經查閱:如果 file 是合法的上傳文件,但出於某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 false,此外還會發出一條警告。
PHP警告屬於error,不屬於exeption,因此不能通過簡單的if(!...)處理,外層的try catch僅僅捕獲了Exception,沒有捕獲Error,所以程序異常終止了。后來我在方法最前面加了error_reporting(0)禁止輸出任何錯誤信息,就好了。另外一種處理辦法是在try catch里面捕獲Error。