PHP之CLI模式


轉載http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283437.html

 

所有的PHP發行版,不論是編譯自源代碼的版本還是預創建的版本,都在默認情況下帶有一個PHP可執行文件。這個可執行文件可以被用來運行命令行的PHP程序。
要在你的系統上找到這個可執行文件,就要遵照下面的步驟:
        Windows :放在PHP主安裝目錄下,文件名是php.exe或者(在老版本的PHP里)是php-cli.exe。
        Linux : 保存在PHP安裝目錄的bin/子目錄下。

需要注意的是CLI模式和CGI模式運行時用的PHP.INI並非同一套配置,需要單獨配置。
不論是在哪一個操作系統里,你都需要對它進行測試,以保證它能夠正常運行,方法是用-v參數調用它:

PHP 5.6.11 (cli) (built: Jul  9 2015 20:55:40)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
View Code

 

使用CLI命令
一個簡單的PHP CLI程序,命名hello.php

<?php

echo 'hello cli';
View Code

現在,試着在命令行提示符下運行這個程序,方法是調用CLI可執行文件並提供腳本的文件名:

shell> /path/php.exe /example/hello.php Hello from the CLI

 

使用標准的輸入和輸出
PHP CLI會定義三個常量,以便讓在命令行提示符下與解釋器進行交互操作更加容易。這些常量見下表

常量 說明
STDIN
標准的輸入設備
STDOUT
標准的輸出設備
STDERR
標准的錯誤設備

使用示例:

<?php fwrite(STDOUT, 'Please Enter Your Name '); $name = trim(fgets(STDIN ) ); fwrite(STDOUT, "hello $name !");

 

 

命令行自定義變量1【$argv|$argc】
在命令行里輸入程序參數來更改其運行方式是很常見的做法。你也可以對CLI程序這樣做。
PHP CLI帶有兩個特殊的變量,專門用來達到這個目的:
  一個是$argv變量,它通過命令行把傳遞給PHP腳本的參數保存為單獨的數組元素;
  另一個是$argc變量,它用來保存$argv數組里元素的個數。

 

使用示例:

<?php print_r($argv);

運行:

 php -f .\cli.php name age sex array(4) { [0]=>
  string(9) ".\cli.php" [1]=>
  string(4) "name" [2]=>
  string(3) "age" [3]=>
  string(3) "sex" }

要注意的是,$argv的第一個自變量總是腳本自己的名稱。

注意:我們還可以用Console_Getopt PEAR類向PHP增加更加復雜的命令行參數。

 

命令行自定義變量2【使用Console_Getopt接收參數】

注意:這個變量僅在 register_argc_argv 打開時可用

getopt($option, $longopts) // 第一個$option接收 -h vb 第二個參數接收 --require sss

<?php $shortopts = ""; $shortopts .= "f:";  // Required value
        $shortopts .= "v::"; // Optional value
        $shortopts .= "abc"; // These options do not accept values
        $longopts = array( "required:", // Required value
            "optional::", // Optional value
            "option", // No value
            "opt", // No value
 ); $options = getopt($shortopts, $longopts); var_dump($options);

結果:

php.exe  \tools\index.php -f "value for f" -v -a --re quired value --optional="optional value" --option will array(6) { ["f"]=>
  string(11) "value for f" ["v"]=>
  bool(false) ["a"]=>
  bool(false) ["required"]=>
  string(5) "value" ["optional"]=>
  string(14) "optional value" ["option"]=>
  bool(false) }

 

命令行變量3【使用CLI參數】

除了用命令行傳遞PHP腳本參數,還可以傳遞PHP CLI參數以更改其工作方式。

參數 說明
-a 交互式運行Run interactively
-c path 從path讀取php的.ini文件
-n 不用讀取php的.ini文件就直接運行
-m 列出經過編譯的模塊
-i 顯示有關PHP構建的信息
-l 檢查PHP腳本的句法
-s 以彩色方式顯示源代碼
-w 顯示去掉注釋之后的源代碼
-h 顯示幫助

 

 

你還可以以交互方式使用PHP CLI,也就是輸入命令,馬上獲得結果。
要得到這種效果,只需要使用一個參數調用CLI可執行文件就行了,就像下面這樣:

shell> /path/to/php -a Interactive mode enabled <?php echo mktime(); 1121187283 echo 2+2; 4 exit();

 

 或者,你可以不使用-a參數就調用CLI可執行文件,直接輸入完整的腳本或者代碼段。

用<Ctrl>-D來結束代碼段,並讓CLI來執行它。見下面的例子

shell> /path/to/php
<?php
echo date("d-M-Y h:i:s", time());

 


 

PHP 5.4.0起, CLI SAPI 提供了一個內置的Web服務器。   這個內置的Web服務器主要用於本地開發使用,不可用於線上產品環境。

  1)啟動服務

php -S localhost;8000
//-S: server 服務

指定根目錄

php -S localhost:8000 -t   foo/  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM