4.3以é™ã§PHPã¯
Command Line Interfaceã‚’æ„味ã™ã‚‹
CLIã¨ã„ã†åå‰ã®æ–°ã—ã„SAPIåž‹
(Server Application Programming Interface)をサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚
åå‰ã‹ã‚‰åˆ†ã‹ã‚‹ã‚ˆã†ã«ã€ã“ã®SAPIåž‹ã¯ã€
PHPã«ã‚ˆã‚‹ã‚·ã‚§ãƒ«(ã¾ãŸã¯ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—)アプリケーショ
ンã®é–‹ç™ºã‚’主ãªå¯¾è±¡ã¨ã—ã¦ã„ã¾ã™ã€‚
CLI SAPIã¨ä»–ã®SAPIã®é–“ã«ã¯ã€
ã„ãã¤ã‹ã®é•ã„ãŒã‚りã¾ã™ã€‚æœ¬ç« ã§ã¯ã€ã“れらã«ã¤ã„ã¦è©³ç´°ã‚’説明ã—ã¾ã™ã€‚
CLI SAPIã¯ã€å½“åˆPHP 4.2.0ã§ãƒª
リースã•れã¾ã—ãŸãŒã€ã“ã®æ™‚点ã§ã¯å®Ÿé¨“çš„ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã«ã‚ã£ãŸãŸã‚ã€
./configureを実行ã™ã‚‹éš›ã«ã€æ˜Žç¤ºçš„ã«
--enable-cliを指定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€æœ‰åйã¨ã™ã‚‹å¿…è¦
ãŒã‚りã¾ã—ãŸã€‚PHP 4.3.0以é™ã€
CLI SAPIã¯ã‚‚ã¯ã‚„実験的ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã§ã¯ãªããªã‚Šã¾
ã—ãŸã€‚ã“ã®ãŸã‚ã€ å¸¸ã«æ§‹ç¯‰ã•れã€
php(Windowsã§ã¯php.exeã¨
ã„ã†åå‰ã¨ãªã‚Šã¾ã™)ãƒã‚¤ãƒŠãƒªã¨ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ã€‚
CLI SAPIã‚’ä»–ã®SAPIã¨æ¯”ã¹ãŸæ™‚
ã®å¤§ããªé•ã„を以下ã«ç¤ºã—ã¾ã™ã€‚
CGI SAPIã¨ç•°ãªã‚Šã€ãƒ˜ãƒƒãƒ€ãŒå‡ºåŠ›ã•れã¾ã›ã‚“。
CGI SAPIã¯ã€HTTPヘッダã®å‡ºåŠ›ã‚’æŠ‘åˆ¶ã™ã‚‹æ©Ÿèƒ½ã‚’
æä¾›ã—ã¦ã„ã¾ã™ãŒã€ç‰ä¾¡ãªæ©Ÿèƒ½ã¯CLI SAPIã§ã¯ã‚µ
ãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。
以下ã«ç¤ºã™ã„ãã¤ã‹ã®php.iniディレクティブã¯ã€CLI
SAPIã«ã‚ˆã‚Šä¸Šæ›¸ãã•れã¾ã™ã€‚ã“れã¯ã€ã‚·ã‚§ãƒ«ç’°å¢ƒã§ã¯æ„味ãŒ
ãªã„ãŸã‚ã§ã™ã€‚
表 23-1上書ãã•れるphp.iniã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–
ディレクティブ | CLI SAPIã®ãƒ‡ãƒ•ォルト値 | コメント |
---|
html_errors | FALSE |
エラーメッセージã«å«ã¾ã‚Œã‚‹HTMLã‚¿ã‚°ã¯ã‚·ã‚§
ル上ã§ã¯æ„味ãŒãªãã€å¯èªæ€§ã‚’ã‹ãªã‚Šä½Žä¸‹ã•ã›ã‚‹ãŸã‚ã€ã“ã®ãƒ‡ã‚£
レクティブã¯ãƒ‡ãƒ•ォルトã§FALSEã¨ãªã£ã¦ã„ã¾ã™ã€‚
|
implicit_flush | TRUE |
print(), echo()ãŠã‚ˆã³
関連ã™ã‚‹ã‚‚ã®ã«ã‚ˆã‚‹å…¨ã¦ã®å‡ºåŠ›ã¯ã€ç›´ã¡ã«å‡ºåŠ›ã•れã€ãƒãƒƒãƒ•ã‚¡ã«
ã‚ャッシュã•れãªã„ã“ã¨ãŒæœ›ã¾ã—ã„ã¨è¨€ãˆã¾ã™ã€‚ã“ã®å ´åˆã§ã‚‚ã€
標準出力をä¿ç•™ã¾ãŸã¯æ“作ã—ãŸã„å ´åˆã«ã¯ã€
output bufferingを使
用ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚
|
max_execution_time | 0 (unlimited) |
シェル環境ã§ã¯ã€PHPã‚’éš›é™ãªã使用ã§ãã‚‹
よã†ã«ã™ã‚‹ãŸã‚ã«ã€æœ€å¤§å®Ÿè¡Œæ™‚é–“ã®åˆ¶é™ã¯ç„¡ã—ã«è¨å®šã•れã¦ã„ã¾
ã™ã€‚Webç”¨ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯æ•°ç§’å˜ä½ã§å®Ÿè¡Œã•れるよã†ä½œã‚‰ã‚Œã¦
ã„ã¾ã™ãŒã€ã‚·ã‚§ãƒ«ã‚¢ãƒ—リケーションã®å®Ÿè¡Œæ™‚é–“ã¯ã€ã“れよりã‹ãª
り長ããªã‚‹å‚¾å‘ãŒã‚りã¾ã™ã€‚
|
register_argc_argv | TRUE |
CLI SAPIを使用ã—ã¦ã„ã‚‹å ´åˆã€ã‚°ãƒãƒ¼ãƒãƒ«
PHP変数$argc
(ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«æ¸¡ã•ã‚Œã‚‹å¼•æ•°ã®æ•°)ã¨
$argv (引数ã®å€¤ã®é…列)ã¯å¸¸ã«ç™»éŒ²ã•れã€
é©åˆ‡ãªå€¤ãŒä»£å…¥ã•れã¾ã™ã€‚
|
注æ„
ã“れらã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã¯ã€è¨å®šãƒ•ァイルphp.iniã¾ãŸã¯ã‚«ã‚¹ã‚¿ãƒ è¨
定ファイル(指定ã—ãŸå ´åˆã®ã¿)ã§ä»–ã®å€¤ã«åˆæœŸåŒ–ã§ãã¾ã›ã‚“。ã“ã®åˆ¶
é™ã¯ã€ã“れらã®ãƒ‡ãƒ•ォルト値ãŒå…¨ã¦ã®è¨å®šãƒ•ァイルをパースã—ãŸå¾Œã«
é©ç”¨ã•れるãŸã‚ã§ã™ã€‚ã—ã‹ã—ã€ã“れらã®å€¤ã¯å®Ÿè¡Œæ™‚ã«å¤‰æ›´ã™ã‚‹ã“ã¨ãŒ
å¯èƒ½ã§ã™ã€‚
(上記ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã®å…¨ã¦ã«ã¤ã„ã¦ã“れãŒå½“ã¦ã¯ã¾ã‚‹ã‚ã‘ã§ã¯ã‚り
ã¾ã›ã‚“。例ãˆã°ã€register_argc_argv)
シェル環境ã§ã®å‹•作を容易ã¨ã™ã‚‹ãŸã‚ã«ã€ä»¥ä¸‹ã®å®šæ•°ãŒå®šç¾©ã•れã¦ã„ã¾
ã™ã€‚
表 23-2CLI固有ã®å®šæ•°
定数 | 説明 |
---|
STDIN |
stdinã¸ã®ã‚ªãƒ¼ãƒ—ン済ã¿ã®ã‚¹ãƒˆãƒªãƒ¼ãƒ 。ã“れ
ã«ã‚ˆã‚Šã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚ªãƒ¼ãƒ—ンã™ã‚‹å¿…è¦ãŒãªããªã‚Šã¾ã™ã€‚
$stdin = fopen('php://stdin', 'r'); |
|
STDOUT |
stdoutã¸ã®ã‚ªãƒ¼ãƒ—ン済ã¿ã®ã‚¹ãƒˆãƒªãƒ¼ãƒ 。ã“れ
ã«ã‚ˆã‚Šã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚ªãƒ¼ãƒ—ンã™ã‚‹å¿…è¦ãŒãªããªã‚Šã¾ã™ã€‚
$stdout = fopen('php://stdout', 'w'); |
|
STDERR |
stderrã¸ã®ã‚ªãƒ¼ãƒ—ン済ã¿ã®ã‚¹ãƒˆãƒªãƒ¼ãƒ 。ã“れ
ã«ã‚ˆã‚Šã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚ªãƒ¼ãƒ—ンã™ã‚‹å¿…è¦ãŒãªããªã‚Šã¾ã™ã€‚
$stderr = fopen('php://stderr', 'w'); |
|
上記ã®ã‚ˆã†ã«ã€stderrã®ã‚ˆã†ãªã‚¹ãƒˆãƒªãƒ¼ãƒ を自分
ã§ã‚ªãƒ¼ãƒ—ンã™ã‚‹å¿…è¦ã¯ãªãã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚¹ãƒˆãƒªãƒ¼ãƒ リソースã®ä»£ã‚り
ã«å®šæ•°ã‚’使用ã™ã‚‹ã ã‘ã§ã‹ã¾ã„ã¾ã›ã‚“。
php -r 'fwrite(STDERR, "stderr\n");' |
ã“れらã®ã‚¹ãƒˆãƒªãƒ¼ãƒ を明示的ã«é–‰ã˜ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。ã“れã¯ã€
PHPã«ã‚ˆã‚Šè‡ªå‹•çš„ã«è¡Œã‚れã¾ã™ã€‚
CLI SAPIã¯ã€å®Ÿè¡Œã•れるスクリプトã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆ
リã«ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’変更ã—ã¾ã›ã‚“
!
CGI SAPIã¨ã®é•ã„を示ã™ä¾‹ã‚’以下ã«ç¤ºã—ã¾ã™ã€‚
<?php
/* Our simple test application */
echo getcwd(), "\n";
?> |
CGI版ã«ã‚ˆã‚Šå®Ÿè¡Œã—ãŸå ´åˆã€å‡ºåŠ›ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãª
りã¾ã™ã€‚
$ pwd
/tmp
$ php-cgi -f another_directory/test.php
/tmp/another_directory |
ã“れã¯ã€PHPãŒå®Ÿè¡Œã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª
ã«ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’変更ã™ã‚‹ã“ã¨ã‚’明らã‹ã«ç¤ºã—ã¦ã„ã¾ã™ã€‚
CLI SAPIを使用ã—ãŸå ´åˆã®å‡ºåŠ›ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Š
ã¾ã™ã€‚
$ pwd
/tmp
$ php -f another_directory/test.php
/tmp |
ã“れã«ã‚ˆã‚Šã€PHPã§ã‚·ã‚§ãƒ«ãƒ„ールを書ãéš›ã®æŸ”軟性
をより大ããã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
注æ„
CGI SAPIã¯ã€ã“ã®CLI SAPI
ã®å‹•作をコマンドライン実行時ã®ã‚¹ã‚¤ãƒƒãƒ-Cã«ã‚ˆ
りサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚
PHPãƒã‚¤ãƒŠãƒªã«ã‚ˆã‚Šæä¾›ã•れるコマンドラインオプショ
ンã®ä¸€è¦§ã¯ã€-hスイッãƒã‚’指定ã—ã¦
PHPを実行ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã„ã¤ã§ã‚‚調ã¹ã‚‹ã“ã¨ãŒã§ã
ã¾ã™ã€‚
Usage: php [options] [-f] <file> [args...]
php [options] -r <code> [args...]
php [options] [-- args...]
-s Display colour syntax highlighted source.
-w Display source with stripped comments and whitespace.
-f <file> Parse <file>.
-v Version number
-c <path>|<file> Look for php.ini file in this directory
-a Run interactively
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-z <file> Load Zend extension <file>.
-l Syntax check only (lint)
-m Show compiled in modules
-i PHP information
-r <code> Run PHP <code> without using script tags <?..?>
-h This help
args... Arguments passed to script. Use -- args when first argument
starts with - or script is read from stdin |
CLI SAPIã¯ã€å®Ÿè¡Œã™ã‚‹PHPコード
ã‚’å–å¾—ã™ã‚‹ãŸã‚ã«ä¸‰ç¨®é¡žã®ç•°ãªã‚‹æ‰‹æ®µã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚
PHPã«ç‰¹å®šã®ãƒ•ァイルã®å®Ÿè¡Œã‚’指示ã™ã‚‹ã€‚
php my_script.php
php -f my_script.php |
ä¸Šè¨˜ã®æ–¹æ³•ã¯å…±ã«(-fスイッãƒã®ä½¿ç”¨ã®å¦‚何ã«é–¢ã‚‰
ãš)指定ã—ãŸãƒ•ァイルmy_script.phpを実行ã—ã¾
ã™ã€‚実行ファイルã¨ã—ã¦ã‚らゆるファイルを指定ã™ã‚‹ã“ã¨ãŒã§ãã€
PHPã‚¹ã‚¯ãƒªãƒ—ãƒˆã¯æ‹¡å¼µå
.phpã§çµ‚ã‚ã‚‹å¿…è¦ãŒãªãã€ä»»æ„ã®åå‰ã‚„æ‹¡å¼µå
を使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
実行ã™ã‚‹PHPコードをコマンドラインã§ç›´æŽ¥æŒ‡å®šã™ã‚‹ã€‚
php -r 'print_r(get_defined_constants());' |
シェル変数ã®ç½®æ›ã¨å¼•用符ã®ä½¿ç”¨ã«ã¤ã„ã¦ã¯ç‰¹ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。
注æ„
ã“ã®ä¾‹ã‚’よãã¿ã¦ä¸‹ã•ã„。開始/終了タグãŒã‚りã¾ã›ã‚“!
-rスイッãƒã‚’使用ã—ãŸå ´åˆã€ã“れらã®ã‚¿ã‚°ã¯ä¸è¦
ã¨ãªã‚Šã¾ã™ã€‚ã“れらã®ã‚¿ã‚°ã‚’使用ã™ã‚‹ã¨ãƒ‘ーサエラーを発生ã—ã¾ã™ã€‚
実行ã™ã‚‹PHPコードを標準入力
(stdin)ã§æŒ‡å®šã™ã‚‹ã€‚
ã“れã¯å¼·åŠ›ãªæ©Ÿèƒ½ã§ã€ä»¥ä¸‹ã®(仮想的ãª)例ã«ç¤ºã™ã‚ˆã†ã«ã€å‹•çš„ã«
PHPコードを生æˆã—ã€å®Ÿè¡Œãƒã‚¤ãƒŠãƒªã«å…¥åŠ›ã™ã‚‹ã“ã¨
ãŒã§ãã¾ã™ã€‚
$ some_application | some_filter | php | sort -u >final_output.txt |
ã“れらã®ã‚³ãƒ¼ãƒ‰ã‚’実行ã™ã‚‹ä¸‰ç¨®é¡žã®æ–¹æ³•を組ã¿åˆã‚ã›ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§
ãã¾ã›ã‚“。
ä»–ã®ã‚·ã‚§ãƒ«ã‚¢ãƒ—リケーションã®ã‚ˆã†ã«ã€PHPãƒã‚¤ãƒŠãƒª
ã«å¼•数を指定ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã ã‘ã§ãªãã€PHPスク
リプトãŒã“ã®å¼•æ•°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æŒ‡å®šã§ãる引
æ•°ã®æ•°ã¯PHPã«ã‚ˆã‚‹åˆ¶é™ã‚’å—ã‘ã¾ã›ã‚“。
(ã‚·ã‚§ãƒ«ã¯æŒ‡å®šå¯èƒ½ãªæ–‡å—æ•°ã®æœ€å¤§å€¤ã‚’è¨å®šã—ã¦ã„ã¾ã™ã€‚通常ã€ã“ã®åˆ¶é™å€¤
ã‚’è¶Šãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。) ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æŒ‡å®šã—ãŸå¼•æ•°ã¯ã€ã‚°ãƒãƒ¼ãƒãƒ«
é…列$argvã§ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ã§ã™ã€‚
æ·»å—0ã¯ã€å¸¸ã«ã‚¹ã‚¯ãƒªãƒ—トåãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
( PHPã‚³ãƒ¼ãƒ‰ãŒæ¨™æº–入力ã¾ãŸã¯ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚¹ã‚¤ãƒƒ
ãƒ-rã«ã‚ˆã‚ŠæŒ‡å®šã•れãŸå ´åˆã€ã‚¹ã‚¯ãƒªãƒ—トåã¯
-ã¨ãªã‚Šã¾ã™ã€‚)
登録ã•れる第2ã®ã‚°ãƒãƒ¼ãƒãƒ«å¤‰æ•°ã¯$argcã§ã€
(ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æŒ‡å®šã•れãŸå¼•æ•°ã®æ•°ã§ã¯ãªã
ã€)é…列$argvã®è¦ç´ æ•°ãŒå«ã¾ã‚Œã¾ã™ã€‚
ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æŒ‡å®šã™ã‚‹å¼•æ•°ãŒæ–‡å—-ã§å§‹ã¾ã£ã¦ã„ãªã„
é™ã‚Šã€ç‰¹ã«ç•™æ„ã™ã¹ãã“ã¨ã¯ã‚りã¾ã›ã‚“ã€‚ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æŒ‡å®šã™ã‚‹å¼•æ•°ãŒæ–‡
å—-ã§å§‹ã¾ã‚‹å ´åˆã€PHP自体ãŒã“
れをパースã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ã¿ãªã™ãŸã‚ã€å•題を発生ã—ã¾ã™ã€‚
ã“れを防æ¢ã™ã‚‹ãŸã‚ã€å¼•数リストセパレータ--を使用
ã—ã¦ä¸‹ã•ã„。PHPã«ãƒ‘ースã•れる引数ã®å¾Œã«
ã“ã®ã‚»ãƒ‘レータを置ãã¨ã€ãã®å¾Œã®å…¨ã¦ã®å¼•æ•°ã¯ãã®ã¾ã¾ãƒ‘ースã•れãšã«
ã‚¹ã‚¯ãƒªãƒ—ãƒˆã«æ¸¡ã•れã¾ã™ã€‚
# This will not execute the given code but will show the PHP usage
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]
# This will pass the '-h' argument to your script and prevent PHP from showing it's usage
$ php -r 'var_dump($argv);' -- -h
array(2) {
[0]=>
string(1) "-"
[1]=>
string(2) "-h"
} |
ã¾ãŸã€PHPをシェルスクリプトã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ä»–ã®
手段ãŒã‚りã¾ã™ã€‚最åˆã®è¡ŒãŒ#!/usr/bin/phpã§å§‹ã¾ã‚Šã€
PHPã®é–‹å§‹/終了タグã®ä¸ã«é€šå¸¸ã®
PHPコードãŒç¶šãスクリプトを書ãã€é©å½“ãªãƒ•ァイル
実行属性をè¨å®šã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ã“ã®æ–¹æ³•ã¯ã€é€šå¸¸ã®ã‚·ã‚§ãƒ«/Perlスク
リプトã¨åŒæ§˜ã«å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
#!/usr/bin/php
<?php
var_dump($argv);
?> |
ã“ã®ãƒ•ァイルã®åå‰ãŒ
testã§ã€ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆ
リã«ã‚ã‚‹ã¨ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†ã«å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
$ chmod 755 test
$ ./test -h -- foo
array(4) {
[0]=>
string(6) "./test"
[1]=>
string(2) "-h"
[2]=>
string(2) "--"
[3]=>
string(3) "foo"
} |
見ã¦åˆ†ã‹ã‚‹ã‚ˆã†ã«ã€
-ã§å§‹ã¾ã‚‹ã‚¹ã‚¯ãƒªãƒ—トã®ãƒ‘ラメー
タを指定ã™ã‚‹éš›ã«ã€ç‰¹ã«æ³¨æ„ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。
表 23-3コマンドラインオプション
オプション | 説明 |
---|
-s |
カラー構文ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºã•れãŸã‚½ãƒ¼ã‚¹ã‚’表示ã—ã¾ã™ã€‚
ã“ã®ã‚ªãƒ—ションã¯ã€ãƒ•ァイルをパースã—ã€HTML
ãƒã‚¤ãƒ©ã‚¤ãƒˆè¡¨ç¤ºç‰ˆã®ãƒ•ァイルを生æˆã—ã€æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã™å†…部機
構を使用ã—ã¾ã™ã€‚行ã†ã®ã¯ã€
<code> [...] </code>ã®ãƒ–ãƒãƒƒã‚¯
を生æˆã™ã‚‹ã“ã¨ã ã‘ã§ã€HTMLヘッダã¯å‡ºåŠ›ã•れ
ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。
注æ„
ã“ã®ã‚ªãƒ—ションã¯ã€-rオプションã¨åŒæ™‚ã«ä½¿
用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
|
-w |
コメントã¨ç©ºç™½æ–‡å—を削除ã—ã¦ã‚½ãƒ¼ã‚¹ã‚’表示ã—ã¾ã™ã€‚
注æ„
ã“ã®ã‚ªãƒ—ションã¯ã€-rオプションã¨åŒæ™‚ã«ä½¿
用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
|
-f |
-fã‚ªãƒ—ã‚·ãƒ§ãƒ³ã«æŒ‡å®šã—ãŸãƒ•ァイルåをパースã—ã€
実行ã—ã¾ã™ã€‚ã“ã®ã‚¹ã‚¤ãƒƒãƒã¯ã‚ªãƒ—ションã§çœç•¥ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
実行ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トを指定ã™ã‚‹ã ã‘ã§å……分ã§ã™ã€‚
|
-v |
PHP, PHP SAPI, Zendã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’標準出力ã«å‡ºåŠ›ã—ã¾ã™ã€‚例:
$ php -v
PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.2.1, Copyright (c) 1998-2002 Zend Technologies |
|
-c |
ã“ã®ã‚ªãƒ—ションを使用ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€php.iniを探ã™ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆ
リを指定ã—ãŸã‚Šã€ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã•れãŸINIファ
イル(php.iniã¨ã„ã†åå‰ã§ã‚ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“)を直接指定ã™ã‚‹
ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚例:
$ php -c /custom/directory/ my_script.php
$ php -c /custom/directory/custom-file.ini my_script.php |
|
-a |
PHPを対話的ã«å®Ÿè¡Œã—ã¾ã™ã€‚
|
-d |
ã“ã®ã‚ªãƒ—ションã«ã‚ˆã‚Š php.ini ã§æŒ‡å®šã§ãã‚‹è¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–
ã«ã‚«ã‚¹ã‚¿ãƒ 値をè¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚æ§‹æ–‡ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
-d configuration_directive[=value] |
例:
# 値ã®éƒ¨åˆ†ã‚’çœç•¥ã™ã‚‹ã¨ã€è¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã«"1"を指定ã—ã¾ã™
$ php -d max_execution_time -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"
# 空ã®å€¤ã‚’渡ã™ã¨è¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã«""ã‚’è¨å®šã—ã¾ã™
php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""
# è¨å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã¯æ–‡å—'='ã®å¾Œã«æŒ‡å®šã—ãŸã‚‚ã®ã‚’è¨å®šã—ã¾ã™
$ php -d max_execution_time=20 -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$ php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense" |
|
-e |
デãƒãƒƒã‚¬/プãƒãƒ•ã‚¡ã‚¤ãƒ©ç”¨ã®æ‹¡å¼µæƒ…å ±ã‚’å‡ºåŠ›ã—ã¾ã™ã€‚
|
-z |
Zendエクステンションをãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚ファイルåã®ã¿ãŒæŒ‡å®šã•れãŸå ´åˆã€
PHPã¯ã“ã®æ‹¡å¼µã‚’カレントã®ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ‡ãƒ•ォルトライブラリパスã‹ã‚‰
ãƒãƒ¼ãƒ‰ã—よã†ã¨ã—ã¾ã™ã€‚
(Linuxシステムã®å ´åˆã¯/etc/ld.so.confã§
指定ã•れã¦ã„ã¾ã™)
ファイルåã‚’çµ¶å¯¾ãƒ‘ã‚¹ã§æŒ‡å®šã—ãŸå ´åˆã€ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ©ã‚¤ãƒ–ラリサーãƒãƒ‘スを
使用ã—ã¾ã›ã‚“ã€‚ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæƒ…å ±ã‚’æœ‰ã™ã‚‹ç›¸å¯¾ãƒ•ァイルåã‚’
指定ã™ã‚‹ã¨ã€PHPã¯ã€
カレントã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ç›¸å¯¾ãƒ‘スã‹ã‚‰æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ãƒãƒ¼ãƒ‰ã™ã‚‹
ã“ã¨ã®ã¿ã‚’行ãªã„ã¾ã™ã€‚
|
-l |
ã“ã®ã‚ªãƒ—ションã«ã‚ˆã‚Šã€æŒ‡å®šã—ãŸPHPコードã®
æ§‹æ–‡ãƒã‚§ãƒƒã‚¯ã®ã¿ã‚’ç°¡å˜ã«è¡Œãªã†ã“ã¨ãŒã§ãã¾ã™ã€‚æˆåŠŸã—ãŸå ´åˆã€
テã‚スト
No syntax errors detected in <filename>
ãŒã€æ¨™æº–å‡ºåŠ›ã«æ›¸ãè¾¼ã¾ã‚Œã€ãƒªã‚¿ãƒ¼ãƒ³ã‚³ãƒ¼ãƒ‰ã¯0
ã¨ãªã‚Šã¾ã™ã€‚失敗ã—ãŸå ´åˆã€ãƒ†ã‚スト Errors parsing
<filename> ã«åŠ ãˆã¦ã€å†…部パーサエラーメッセージ
ãŒæ¨™æº–å‡ºåŠ›ã«æ›¸ãè¾¼ã¾ã‚Œã€ã‚·ã‚§ãƒ«ãƒªã‚¿ãƒ¼ãƒ³ã‚³ãƒ¼ãƒ‰ã¯ã€
255ã¨ãªã‚Šã¾ã™ã€‚
ã“ã®ã‚ªãƒ—ションã¯ã€(未定義ã®é–¢æ•°ã®ã‚ˆã†ãª)致命的ãªã‚¨ãƒ©ãƒ¼(fatal error)
ã¯ã¿ã¤ã‘ã¾ã›ã‚“。致命的ãªã‚¨ãƒ©ãƒ¼ã«ã¤ã„ã¦ã‚‚調ã¹ãŸã„å ´åˆã¯ã€
-f を使用ã—ã¦ãã ã•ã„。
注æ„
ã“ã®ã‚ªãƒ—ションã¯ã€ã‚ªãƒ—ション-rã¨å…±ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯
ã§ãã¾ã›ã‚“。
|
-m |
ã“ã®ã‚ªãƒ—ションを使用ã™ã‚‹ã¨ã€PHPã¯ã€PHPã«çµ„ã¿è¾¼ã¾ã‚ŒãŸ
(ãã—ã¦ãƒãƒ¼ãƒ‰ã•れãŸ) Zend モジュールを出力ã—ã¾ã™ã€‚
$ php -m
[PHP Modules]
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype
[Zend Modules] |
|
-i |
ã“ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションã¯ã€phpinfo()をコールã—ã€
çµæžœã‚’出力ã—ã¾ã™ã€‚PHP ãŒæ£ã—ã動作ã—ã¦ã„ãªã„å ´åˆã€
php -iを実行ã—ã€æƒ…å ±ãƒ†ãƒ¼ãƒ–ãƒ«ã®å‰ã¾ãŸã¯ä¸ã«å‡ºåŠ›
ã•れるエラーメッセージを調ã¹ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚
出力ã¯ã€HTML å½¢å¼ã§è¡Œãªã‚れるãŸã‚ã€ã‹ãªã‚Šé‡ãŒ
多ããªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。
|
-r |
ã“ã®ã‚ªãƒ—ションã«ã‚ˆã‚Šã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã®ã¿ã§PHP
ã®å®Ÿè¡ŒãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
PHPã®é–‹å§‹ãŠã‚ˆã³çµ‚了タグ
(<?php ãŠã‚ˆã³ ?>)
ã¯ä¸è¦ã§ã€ã“れらを付ã‘ã‚‹ã¨
パーサエラーã¨ãªã‚Šã¾ã™ã€‚
注æ„
ã“ã®ã‚ˆã†ã«PHPを実行ã™ã‚‹éš›ã«ã€ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã®
変数ãŒã‚·ã‚§ãƒ«ã«ã‚ˆã‚Šè¡Œãªã‚れる置æ›ã¨å¹²æ¸‰ã—ãªã„よã†ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。
パーサエラーを生ã˜ã‚‹ä¾‹
$ php -r "$foo = get_defined_constants();"
Command line code(1) : Parse error - parse error, unexpected '=' |
ã“ã“ã§ã®å•題ã¯ã€2é‡å¼•用符 " を用ã„ãŸå ´åˆã§ã‚‚
sh/bashãŒå¤‰æ•°ç½®æ›ã‚’行ã†ã“ã¨ã§ã™ã€‚
$fooã¯ãŠãらã定義ã•れã¦ã„ãªã„ã®ã§ã€
空文å—列ã«å±•é–‹ã•れãŸå¾Œã€å®Ÿè¡Œç”¨ã«PHPã«
ãã®ã‚³ãƒ¼ãƒ‰ãŒæ¸¡ã•れã€ä»¥ä¸‹ã®ã‚ˆã†ã«èªã¿è¾¼ã‚€ã“ã¨ã«ãªã‚Šã¾ã™ã€‚
$ php -r " = get_defined_constants();" |
æ£ã—ã„æ–¹æ³•ã¯ã€1é‡å¼•用符'を使用ã™ã‚‹ã“ã¨ã§ã™ã€‚
1é‡å¼•ç”¨ç¬¦ã§æ‹¬ã‚‰ã‚ŒãŸæ–‡å—列ã®ä¸ã®å¤‰æ•°ã¯ã€sh/bashã«ã‚ˆã‚Šå±•é–‹ã•れã¾ã›ã‚“。
$ php -r '$foo = get_defined_constants(); var_dump($foo);'
array(370) {
["E_ERROR"]=>
int(1)
["E_WARNING"]=>
int(2)
["E_PARSE"]=>
int(4)
["E_NOTICE"]=>
int(8)
["E_CORE_ERROR"]=>
[...] |
sh/bash以外ã®ã‚·ã‚§ãƒ«ã‚’使用ã—ã¦ã„ã‚‹å ´åˆã«ã¯ã€åˆ¥ã®å•題を経験ã—ãŸã“ã¨ãŒ
ã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã‚’作æˆã™ã‚‹ã‹
phpdoc@lists.php.netã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ã£ã¦ãã ã•ã„。
シェル変数をコードã«å–å¾—ã—よã†ã¨ã—ãŸã‚Šã€ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—を行ãªã†ãŸã‚ã«
ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚’使用ã—ãŸã‚Šã—ãŸå ´åˆã«ã‚‚ã€å®¹æ˜“ã«å•題を発生ã™ã‚‹
å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚注æ„ãŒå¿…è¦ã§ã™ã€‚
|
-h |
ã“ã®ã‚ªãƒ—ションを使用ã™ã‚‹ã¨ã€å®Ÿéš›ã®ä¸€é€£ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションã¨
å„1行ã®èª¬æ˜ŽãŒæƒ…å ±ã‚’å–å¾—ã§ãã¾ã™ã€‚
|
PHP実行ãƒã‚¤ãƒŠãƒªã¯ã€Webサーãƒã‹ã‚‰å®Œå…¨ã«ç‹¬ç«‹ã—ã¦PHPスクリプトを実行ã™
ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚Unixシステムを使用ã—ã¦ã„ã‚‹å ´åˆã€å®Ÿ
行å¯èƒ½ã¨ã™ã‚‹ãŸã‚ã«ã€PHPスクリプトã®å…ˆé ã«ç‰¹åˆ¥ãªä¸€è¡Œã‚’è¿½åŠ ã™ã‚‹å¿…è¦ãŒ
ã‚りã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚·ã‚¹ãƒ†ãƒ ãŒãã®ã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ
を知るã“ã¨ãŒã§ãã¾ã™ã€‚
Windows環境ã§ã¯ã€.phpファイルã®ãƒ€ãƒ–ルクリックオ
プションã«php.exeを関連ã¥ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã¾ãŸã¯ã€PHPã«ã‚ˆã‚Šã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹ãƒãƒƒãƒãƒ•ァイルを作æˆã™ã‚‹ã“ã¨ã‚‚
å¯èƒ½ã§ã™ã€‚Unix上ã§å‹•作ã•ã›ã‚‹ãŸã‚ã«ã‚¹ã‚¯ãƒªãƒ—トã«è¿½åŠ ã•れãŸå…ˆé 行ã¯ã€
Windows環境ã§ã®å‹•ä½œã«æ‚ªå½±éŸ¿ã‚’与ãˆã¾ã›ã‚“。ã“ã®ãŸã‚ã€ã“ã®æ‰‹æ³•ã«ã‚ˆã‚Šã€
é»’é ˆãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ ç’°å¢ƒã§å‹•作ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を書ãã“ã¨ãŒã§ãã¾ã™ã€‚
コマンドラインPHPプãƒã‚°ãƒ©ãƒ ã®æ›¸æ–¹ã®ç°¡å˜ãªä¾‹ã‚’以下ã«ç¤ºã—ã¾ã™ã€‚
例 23-1
コマンドラインã‹ã‚‰å®Ÿè¡Œã•れるã“ã¨ã‚’æ„図ã—ãŸã‚¹ã‚¯ãƒªãƒ—ト(script.php)
#!/usr/bin/php
<?php
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
This is a command line PHP script with one option.
Usage:
<?php echo $argv[0]; ?> <option>
<option> can be some word you would like
to print out. With the --help, -help, -h,
or -? options, you can get this help.
<?php
} else {
echo $argv[1];
}
?> |
|
上ã®ã‚¹ã‚¯ãƒªãƒ—トã§ã¯ã€ç‰¹æ®Šãªå…ˆé 行ãŒç”¨ã„られã¦ãŠã‚Šã€ã“ã®ãƒ•ァイルãŒ
PHPã«ã‚ˆã‚Šå®Ÿè¡Œã•れるã“ã¨ã‚’示ã—ã¦ã„ã¾ã™ã€‚ã“ã“ã§ã¯CLI版を使用ã—ã¦ã„ã‚‹ãŸã‚ã€
HTTPヘッダã¯å‡ºåŠ›ã•れã¾ã›ã‚“。PHPã§
コマンドラインアプリケーションを使用ã™ã‚‹éš›ã«ã¯ã€2ã¤ã®å¤‰æ•°
$argc and $argv を使用ã™ã‚‹ã“ã¨ãŒ
ã§ãã¾ã™ã€‚
最åˆã®å¤‰æ•°ã¯ã€å¼•æ•°ã®æ•°ã«1(実行ä¸ã®ã‚¹ã‚¯ãƒªãƒ—トã®åå‰)ã‚’åŠ ãˆãŸã‚‚ã®ã§ã™ã€‚
2番目ã®å¤‰æ•°ã¯ã€å¼•æ•°ã‚’ä¿æŒã™ã‚‹é…列ã§ã€ã‚¹ã‚¯ãƒªãƒ—トåを有ã™ã‚‹
è¦ç´ 0($argv[0])ã‹ã‚‰å§‹ã¾ã£ã¦ã„ã¾ã™ã€‚
上ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€å¼•æ•°ãŒ1より少ãªã„ã‹ã¾ãŸã¯å¤šã„ã‹ã‚’調ã¹ã¦ã„ã¾ã™ã€‚
ã¾ãŸã€å¼•数㌠--help, -help,
-h, -?ã®å ´åˆã€
ヘルプメッセージを出力ã—ã€å‹•çš„ã«ã‚¹ã‚¯ãƒªãƒ—トåを出力ã—ã¾ã™ã€‚
ä»–ã®å¼•æ•°ã‚’å—ã‘å–ã£ãŸå ´åˆã€ã“れを出力ã—ã¾ã™ã€‚
上ã®ã‚¹ã‚¯ãƒªãƒ—トをUnixã§å®Ÿè¡Œã™ã‚‹å ´åˆã€å®Ÿè¡Œå¯èƒ½ã¨ã—ãŸå¾Œã€
script.php echothis ã¾ãŸã¯
script.php -h ã¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
Windowsã§ã¯ã€ã“ã®å‡¦ç†ã‚’行ãªã†ä»¥ä¸‹ã®ã‚ˆã†ãªãƒãƒƒãƒãƒ•ァイルを作æˆã™ã‚‹ã“ã¨ãŒ
ã§ãã¾ã™ã€‚
例 23-2
コマンドラインPHPスクリプトを実行ã™ã‚‹ãƒãƒƒãƒãƒ•ァイル(script.bat)
@c:\php\php.exe script.php %1 %2 %3 %4 |
|
上ã®ãƒ—ãƒã‚°ãƒ©ãƒ ãŒscript.phpã¨ã„ã†åå‰ã§ã‚ã‚‹ã¨
ã—ã€c:\php\php.exeã«php.exe
ãŒã‚ã‚‹ã¨ã™ã‚‹ã¨ã€ã“ã®ãƒãƒƒãƒãƒ•ァイルã¯ã€è¿½åŠ ã—ãŸã‚ªãƒ—ション
script.bat echothis ã¾ãŸã¯
script.bat -h を指定ã—ã¦ã€ã‚¹ã‚¯ãƒªãƒ—トを実行ã—ã¾ã™ã€‚
PHPã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚¢ãƒ—リケーションを拡張ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã‚‹
ãã®ä»–ã®é–¢æ•°ã«ã¤ã„ã¦ã¯ã€æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
Readlineã«é–¢ã™ã‚‹
ドã‚ュメントもå‚ç…§ã—ã¦ãã ã•ã„。