平常我们在命令行执行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文件