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