由于用惯了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 应用名/控制器/方法 去执行了。