thinkphp 命令行 常見(jiàn)問(wèn)題
2023-01-03 加入收藏
全局變量引問(wèn)題
thinkphp一直是簡(jiǎn)單,高效著稱(chēng)的框架,當(dāng)我興致匆匆的按照文檔寫(xiě)完事例,在命令行下執(zhí)行,php think 的時(shí)候,what!! 并沒(méi)有我添加的命令,當(dāng)我還保佑一絲希望去執(zhí)行 php think test 如愿以?xún)數(shù)牡玫搅肆顺绦虻膱?bào)錯(cuò),報(bào)錯(cuò)內(nèi)容如下:
[InvalidArgumentException]
Command “test” is not defined.
發(fā)現(xiàn)了問(wèn)題,怎么辦?當(dāng)然要解決問(wèn)題,我首先找到了一位行業(yè)混跡多年的同事詢(xún)問(wèn)原因,至于為什么我不先百度直接問(wèn)他,原因有兩點(diǎn),第一 他就在我隔壁,對(duì)我來(lái)說(shuō)只是一個(gè)轉(zhuǎn)頭的功夫,第二就是他前兩天剛做了這個(gè)功能。我覺(jué)得當(dāng)下這個(gè)應(yīng)用場(chǎng)景采取問(wèn)他的解決方案是最經(jīng)濟(jì)高效的。他看了一遍,我寫(xiě)的代碼并沒(méi)有發(fā)現(xiàn)問(wèn)題所在,于是這個(gè)找出問(wèn)題的重任還是得自己完成,我去tp官方文檔看了一下評(píng)論內(nèi)容,有同僚和我遇到一樣的報(bào)錯(cuò)內(nèi)容(報(bào)錯(cuò)原因未必一樣),但是并沒(méi)有解決方法,找尋官方文檔失敗后,我決定從源碼來(lái)查找真正的原因,畢竟tp的代碼phper還是都能看得懂,經(jīng)過(guò)一番代碼追蹤終于找到癥結(jié)所在,原因就是。。。
我重新定義APP_PATH全局變量,導(dǎo)致無(wú)法找到command配置,從而無(wú)法加載自定義命令,果斷在think文件中加入了APP_PATH的變量定義。
php thinkphp test
執(zhí)行成功!!到這里就大功告成了。
自定義命名空間引起的問(wèn)題
如果在web開(kāi)發(fā)中修改了config里的app_namespace字段,那么需要你在項(xiàng)目根目錄的think文件中添加一行如下代碼
//定義命名空間//把這里的api改為和你config中app_namespace一致就可以了define("APP_NAMESPACE","api");
這里總結(jié)一下,你在web里定義的全局變量在console下面是無(wú)法找到的,因此你需要在console中重新定義一遍。