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

1.能夠按照Ci官方文件的指導來進行操做php

    讓咱們先建立一個簡單的控制器,打開你的文本編輯器,新建一個文件並命名爲 Tools.php,而後輸入以下的代碼:windows

   

<?php
class Tools extends CI_Controller {

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

   而後將文件保存到 application/controllers/ 目錄下。app

   如今你能夠經過相似下面的 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!this

$ php index.php tools message "John Smith"

   這裏咱們傳一個參數給它,這和使用 URL 參數是同樣的。"John Smith" 被做爲參數傳入並顯示出:url

Hello John Smith!

 

2.須要注意如下狀況可能致使執行或者輸出內容失敗spa

   首先要檢查下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’,將會致使命令行執行失敗。code

    若所在項目中有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! 
相關文章
相關標籤/搜索