thinkphp 命令行 常见问题
2023-01-03 加入收藏
全局变量引问题
thinkphp一直是简单,高效著称的框架,当我兴致匆匆的按照文档写完事例,在命令行下执行,php think 的时候,what!! 并没有我添加的命令,当我还保佑一丝希望去执行 php think test 如愿以偿的得到了了程序的报错,报错内容如下:
[InvalidArgumentException]
Command “test” is not defined.
发现了问题,怎么办?当然要解决问题,我首先找到了一位行业混迹多年的同事询问原因,至于为什么我不先百度直接问他,原因有两点,第一 他就在我隔壁,对我来说只是一个转头的功夫,第二就是他前两天刚做了这个功能。我觉得当下这个应用场景采取问他的解决方案是最经济高效的。他看了一遍,我写的代码并没有发现问题所在,于是这个找出问题的重任还是得自己完成,我去tp官方文档看了一下评论内容,有同僚和我遇到一样的报错内容(报错原因未必一样),但是并没有解决方法,找寻官方文档失败后,我决定从源码来查找真正的原因,毕竟tp的代码phper还是都能看得懂,经过一番代码追踪终于找到症结所在,原因就是。。。
我重新定义APP_PATH全局变量,导致无法找到command配置,从而无法加载自定义命令,果断在think文件中加入了APP_PATH的变量定义。
php thinkphp test
执行成功!!到这里就大功告成了。
自定义命名空间引起的问题
如果在web开发中修改了config里的app_namespace字段,那么需要你在项目根目录的think文件中添加一行如下代码
//定义命名空间//把这里的api改为和你config中app_namespace一致就可以了define("APP_NAMESPACE","api");
这里总结一下,你在web里定义的全局变量在console下面是无法找到的,因此你需要在console中重新定义一遍。