最近一個項目部署到Linux服務器上去的時候,發現某些模板竟然會報錯說“模板不存在:/Application/Admin/....”
檢查了服務器上的文件,並沒有缺少文件,再次上傳文件到服務器,還是報錯。莫名其妙,懷疑是代碼問題。
仔細檢查後,發現是模板的文件名問題:
用過TP的都知道:thinkphp會在$this->display()的時候,會自動獲取方法名作為模板的文件名,比如一個getUserInfo方法對用著getuserinfo.html的模板文件。
對控制器裡的方法,我用駝峰命名法,而view層裡的模板名,也是用了駝峰命名法。比如getUserInfo方法對應了getUserInfo.html的模板文件,但是!thinkphp在$this->display()的時候,讀取方法名作為模板名,讀出來的方法名是小寫的,也就是要求模板名為getuserinfo.html。
在Windows下不區分文件名大小寫,Linux會區分,所以報錯了。
解決辦法:要麼改模板文件名為小寫,要麼$this->display('模板文件名')(不帶.html)。
細節決定成敗,希望這篇文章可以真正的幫助大家,謝謝大家的閱讀。