您的位置:首页 > 其它

CI 框架下执行CLI(命令行)

2016-11-21 16:13 204 查看
1.可以按照Ci官方文件的指导来进行操作

让我们先创建一个简单的控制器,打开你的文本编辑器,新建一个文件并命名为 Tools.php,然后输入如下的代码:

<?php
class Tools extends CI_Controller {

public function message($to = 'World')
{
echo "Hello {$to}!".PHP_EOL;
}
}


然后将文件保存到 application/controllers/ 目录下。

现在你可以通过类似下面的 URL 来访问它:

example.com/index.php/tools/message/to


或者,我们可以通过 CLI 来访问。在 Mac/Linux 下你可以打开一个终端,在 Windows 下你可以打开 “运行”,然后输入 "cmd",进入 CodeIgniter 项目所在的目录。

$ cd /path/to/project;
$ php index.php tools message


如果你操作正确,你应该会看到 Hello World! 。

$ php index.php tools message "John Smith"


这里我们传一个参数给它,这和使用 URL 参数是一样的。"John Smith" 被作为参数传入并显示出:

Hello John Smith!


2.需要注意以下情况可能导致执行或者输出内容失败

首先要检查下CI框架中的配置文件config.php中的参数如下:

/*
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'REQUEST_URI' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'REQUEST_URI'    Uses $_SERVER['REQUEST_URI']
| 'QUERY_STRING'   Uses $_SERVER['QUERY_STRING']
| 'PATH_INFO'      Uses $_SERVER['PATH_INFO']
|
| WARNING: If you set this to 'PATH_INFO', URIs will always be URL-decoded!
*/
//$config['uri_protocol']    = 'REQUEST_URI';
$config['uri_protocol']    = 'AUTO';


$config['uri_protocol'] 参数设置为‘REQUEST_URI’,将会导致命令行执行失败。

若所在项目中有url权限控制,记得把要执行文件的路径放到白名单中。

在Windows下环境执行,需要配置php的环境变量

/*
*  windows下cmd执行操作
*  当前CI框架的入口文件index.php所在目录 D:\workspace\network\trunk\public
*  index.php 为入口文件
*  crontab文件夹处在application/controllers下面,已加入白名单
*  tools为crontab下面的文件,message为tools.php中的方法,
*  tom1112为传入的变量值
*/

D:\workspace\network\trunk\public>php index.php crontab/tools message/tom1112

/*输出*/
Hello tom1112!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: