thinkphp 命令行 踩坑 记录

来源:互联网 发布:java把string转为json 编辑:程序博客网 时间:2024/06/05 23:57

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里定义的全局变量在console下面是无法找到的,因此你需要在console中重新定义一遍。