thinkphp 命令行 常见问题汇总

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ucmir183/article/details/78457878

全局变量引问题

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中重新定义一遍。

猜你喜欢

转载自blog.csdn.net/ucmir183/article/details/78457878