用 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.
再來就依下述五點來寫:
- 安裝 PHP CLI
- CLI 版 Hello World
- 標準輸入 STDIN, 標準輸出 STDOUT, 標準錯誤輸出 STDERR
- argv, argc 參數接收
- PHP 預設常用參數
- 安裝 PHP CLI
apt-get install php5-cli (或 php4-cli)
- CLI 版 Hello World (記得 chmod +x)
#!/usr/bin/php
<?php echo 'Hello World!'; ?>
- 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!
- 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
注意: 轉載文章的此範例有錯誤, 特別是最後一個參數, 要用 單引號"'" 括起來, 不然 "!" 這個會有錯誤產生.
- 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