THINKPHP6.0踩坑cli执行模式

219 阅读1分钟

由于用惯了cli模式执行定时任务,发现tp6不能直接cli执行。于是上网搜索资料得出结论

复制一份public/index.php文件,改成cli.php。

然后在cli.php加入以下代码

if (false !== strpos(PHP_SAPI, "cli")){    $_SERVER["REQUEST_URI"] = $_SERVER["argv"][1] ?? "";}

一开始是正常的,但是线上的任务报错

[Error]
  Call to a member function isJson() on string

于是逐步调试,发现多应用配置的情况下需要调整一下文件    

项目名\vendor\topthink\think-multi-app\src\MultiApp.php第94行,加入cli到判断数组里面

然后就可以用  php 项目/public/cli.php 应用名/控制器/方法 去执行了。