在config/app.php里面有這樣一個(gè)設(shè)置項(xiàng):
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => 'http://localhost',
由上面的注釋可知粗卜,當(dāng)我們以cli模式調(diào)用php時(shí)晤揣,就會(huì)使用這個(gè)url來生成正確的網(wǎng)址桥爽。
遇坑過程
當(dāng)我嘗試使用redis作為mail發(fā)送隊(duì)列的時(shí)候,需要將發(fā)送的郵件放到redis里面后昧识,然后執(zhí)行php artisan queue:listen將郵件讀取出來并發(fā)送钠四。
由于發(fā)送的郵件模板里面使用url()函數(shù),因此理論上會(huì)讀取到config/app.php里面url的設(shè)定值跪楞。
提前說明一下缀去,為了部署的靈活性,我預(yù)先在env文件里面設(shè)置了APP_URL甸祭,然后在app.php里面調(diào)用它缕碎。
好,重點(diǎn)的地方到了池户!
在本地開發(fā)時(shí)咏雌,無論我嘗試多少遍,郵件里面url('/')取到的值永遠(yuǎn)都是localhostP=埂赊抖!
但是!將代碼部署到遠(yuǎn)程以后(當(dāng)然env里面APP_URL設(shè)置值已更改為部署服務(wù)器的網(wǎng)址)寨典,居然郵件里面顯示是正常的Q!!凝赛!
經(jīng)過多次測(cè)試注暗,和使用php artisan tinker進(jìn)行了反復(fù)確認(rèn)坛缕,確實(shí)在本地?zé)o論配置怎么改,url('/')永遠(yuǎn)都是localhost捆昏;而服務(wù)器永遠(yuǎn)都是www.zshanjun.com赚楚。
問題是,為什么本地表現(xiàn)出這樣的行為骗卜?
填坑過程
問題出現(xiàn)在本地宠页,那么我就從本地找原因。
通常我們?cè)诒镜亻_發(fā)時(shí)寇仓,一般都習(xí)慣將網(wǎng)站的域名設(shè)置為例如zshanjun.dev
問題就出現(xiàn)在這個(gè)地方举户!
當(dāng)我在本地開發(fā)時(shí),會(huì)直接將APP_URL設(shè)置為zshanjun.dev遍烦,在線上的時(shí)候俭嘁,會(huì)將APP_URL設(shè)置為http://www.zshanjun.com。
這時(shí)候服猪,如果細(xì)心一點(diǎn)供填,應(yīng)該就能發(fā)現(xiàn)它們兩者的區(qū)別了!
解決方案就是罢猪,給zshanjun.dev也加上http://近她!
到此問題解決!
參考網(wǎng)站: