thinkphp3.2开启cli模式执行

AndyYang| 阅读:6473 发表时间:2017-09-22 16:15:49 php
摘要: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也是可以的。如果不定义,可以不用执行步骤二。
本文为AndyYang原创,转载请注明出处!
如果您觉得好,可以打赏作者:
如果您觉得累了,是否想看点美女养养眼:猛戳>>朋友帮
如果您觉得皮了,是否想来点神吐槽:猛戳>>iPhone查询中

已有1条评论

昵称:
邮箱:

  • 最新评论

ww2019-11-15 15:16:14
如何体现定时呢
2020-06-27 13:36:17 (管理员回复)
crontab
iPhone查询中 - bbs.ipcxz.com 朋友帮 - www.pengyb.cn iPhone查询中 - bbs.ipcxz.com
反馈
微信订阅号