ThinkPHP6.0多应用命令行访问

250 阅读1分钟

ThinkPHP6.0默认不支持直接命令行模式访问index应用下index控制器index方法以外的其他应用、控制器、方法,具体原因暂时没有搞清楚。网上找到一个简单的解决办法,希望对需要的朋友有所帮助!

Thinkphp6是你自己的项目路径

Thinkphp6\app\index\controller\Index.php文件代码

<?php
namespace app\index\controller;

use app\BaseController;

class Index extends BaseController
{
    public function index()
    {
        return 'Index';
    }

    public function hello($name = '我是Index')
    {
        return 'hello,' . $name;
    }
}

Thinkphp6\app\index\controller\Index.php文件代码

<?php
namespace app\admin\controller;

use app\BaseController;

class Index extends BaseController
{
    public function index()
    {
        return 'Admin';
    }

    public function hello($name = '我是Admin')
    {
        return 'hello,' . $name;
    }
}

命令行执行控制器下的方法结果,只有第一个结果是正确的,其他执行结果完全不对。

image.png

修改方法:

1.先找到request.php文件,目录位置是Thinkphp6\vendor\topthink\framework\src\think\Request.php

image.png

2.修改request.php文件614行,不同版本文件位置可能不太一样。注释原来的代码,使用新的_SERVER['argv'][1]) ? $_SERVER['argv'][1] : '';

image.png

接下来查看修改后的执行结果

image.png

完整项目附件:点此下载