thinkphp3.2开启cli模式执行

摘要:CLI是Command Line Interface的缩写,即命令行界面。thinkphp对cli执行不是很友好,如果直接手动执行,是没什么太大问题,但如果crontab定时任务执行,则会报错,因此调整下。

一、在index.php同等级目录下新建一个cli.php,添加:

<?php
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
//define('APP_DEBUG',false);

//定义命令行模式执行
define('APP_MODE','cli');

//定义模块名
define('BIND_MODULE','Cli');

// 定义应用目录(linux下需要写绝对目录)
define( 'APP_PATH', dirname(__FILE__).'/Application/' ); 

// 引入ThinkPHP入口文件
require dirname( __FILE__).'/ThinkPHP/ThinkPHP.php';

二、在路径/ThinkPHP/Mode下面有个文件,名字叫做common.php ,复制一份出来,命名为cli.php,然后把里面引入日志类的代码注释或者删除掉:即干掉 
‘Think/Log’ => CORE_PATH . ‘Log’.EXT,

三、其他
Cli目录保持和默认的Home模块一样的结构就行,Cli里可以只放命令行执行的文件,走新建的cli.php入口。其他web模块可以走index.php。
另外注意以上操作完清除Runtime缓存文件。

测试:
Cli/Controller下新建IndexController.class.php,添加代码:

<?php
namespace Cli/Controller;
use Think/Controller;

class IndexController extends Controller {
    public function index() {
        echo 'cli testing~';
    }
}

调用:
php cli.php Index/index

经过本人测试:发现如果不定义APP_MODE也是可以的。如果不定义,可以不用执行步骤二。

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/98506.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论