form1.cn
Make a little progress every day

Thinkphp3.2 cli模式的配置与使用方法

29th of November 2016 PHP Thinkphp 4594

平常我们在命令行执行php脚本的方法一般都是这样的

# ... php common.php
# ... php common.php params ..

以上php为服务器上的php可执行文件,common.php 是你要执行的脚本文件,params 参数


参数设置方法

php文件后空格+参数

程序里用argv[]来读参数,你会接到一个 argv 数组 argv[1] argv[2] ...


thinkphp在地址栏上访问为:http://form1.cn/index.php/Script/article/getfile

index.php 为脚本文件也是thinkphp的入口文件

Script/article/getfile 就是参数了

那我们肯定会这样做:

# ... php /var/www/myweb/index.php Script/article/getfile

但是这样就会出现引入ThinkPHP.php失败的问题,这个问题算是比较容易解决的,但是后来还有其他各种报错,经过查看相关核心代码,终于找到无需修改代码,就可以轻易使用cli模式的方法。


thinkphp3.2 cli模式实现步骤如下


1、官方下载的框架文件里面的index.php文件引入其他文件使用的是相对路径,这导致了定时执行的时候引入ThinkPHP.php文件不存在的问题,修改成绝对路径即可。

define( 'APP_PATH', dirname(__FILE__).'/Application/' ); 
require dirname( __FILE__).’/ThinkPHP/ThinkPHP.php';


2、增加cli模式的入口文件cli.php,内容跟index.php的一样,同时增加一段代码

define('APP_MODE','cli'); //定义APP的执行模式

此时,我们有两个入口文件,一个是web服务访问方式的index.php,另一个是cli模式访问的cli.php


3、在路径 /ThinkPHP/Mode 下面有个文件,名字叫做common.php ,复制一份出来,命名为cli.php,然后把里面引入日志类的代码注释或者删除掉

'Think\Log'               => CORE_PATH . 'Log'.EXT,
'Think\Log\Driver\File'   => CORE_PATH . 'Log/Driver/File'.EXT,


4、删除Runtime/Cache下面的所有缓存


5、以后cli模式调用的时候,就用cli.php入口文件,比如定时任务

# ... php /var/www/myweb/cli.php Script/article/getfile

如果是web服务访问,则依然使用index.php文件