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


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! 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM