X

用 PHP 寫 Command-Line Script(CLI)

用 PHP 來寫一般 Script 很簡單, 只要直接寫, 再用 PHP 去執行即可, 但是寫 Command-Line Script(CLI - Command-Line Interface) 當然要用用 STDIN, STDOUT, STDERR 囉(用此做做互動)~

詳細文件可見: PHP: Using PHP from the command line - Manual

上述文件的資料算是蠻多的, 有人整理出比較常用的方法, 就如下 Link, 以下的範例大多參考自: Control your scripts with command-line PHP.

再來就依下述五點來寫:

  1. 安裝 PHP CLI
  2. CLI 版 Hello World
  3. 標準輸入 STDIN, 標準輸出 STDOUT, 標準錯誤輸出 STDERR
  4. argv, argc 參數接收
  5. PHP 預設常用參數
  1. 安裝 PHP CLI

apt-get install php5-cli (或 php4-cli)

  1. CLI 版 Hello World (記得 chmod +x)

#!/usr/bin/php
<?php echo 'Hello World!'; ?>

  1. STDIN, STDOUT, STDERR
  • STDIN: The standard input device
  • STDOUT: The standard output device
  • STDERR: The standard error device

範例:

<?php
// 透過 標準輸出 印出要詢問的內容
fwrite(STDOUT, "Enter your name: ");

// 抓取 標準輸入 的 內容
$name = trim(fgets(STDIN));

// 將剛剛輸入的內容, 送到 標準輸出
fwrite(STDOUT, "Hello, $name!");
?>

執行即會如下:

Enter your name: Jon
Hello, Jon!

  1. argv, argc 參數接收
  • argv: 參數值, 會存成 array 型態( argv[0, 1....] )
  • argc: 參數總數, 數字(int)型態

範例: arg.php

#!/usr/bin/php
<?php echo print_r($argv); echo 'argc: ' . $argc; ?>

執行結果:

./arg.php chocolate 276 'killer tie, dude!'
Array
(
[0] => b.php
[1] => chocolate
[2] => 276
[3] => killer tie, dude!
)
argc: 4

注意: 轉載文章的此範例有錯誤, 特別是最後一個參數, 要用 單引號"'" 括起來, 不然 "!" 這個會有錯誤產生.

  1. PHP 預設常用參數(更多詳細可見 PHP Manual)
  • -a: Run interactively (直譯模式)
  • -c path: Read php.ini file from path
  • -n: Run without reading php.ini
  • -m: 列出現在有載入哪些 Modules
  • -i: Display information about the PHP build
  • -l: 測試看看 Script 是否有錯誤
  • -s: 將 Script 的 Keyword 標出彩色(HTML)
  • -w: Display source code after stripping comments
  • -h: Display help

範例:

php -a (任何命令都直接輸出, 想成類同 python 就是了)
Interactive mode enabled
<?php
echo time();
1167140419
echo 2+2;
4
exit;

即跳出回 shell.

抓取參數可使用此 Function: PHP: getopt - Manual

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post