ホームページ  >  記事  >  バックエンド開発  >  PHPコマンドラインの実行例

PHPコマンドラインの実行例

小云云
小云云オリジナル
2018-03-14 11:21:263545ブラウズ

この記事では主に、PHP バイナリ ファイル (つまり、php.exe プログラム) によって提供されるコマンド ライン モードの次のオプションとパラメータについて説明します。これらのパラメータは、PHP -h コマンドを通じていつでも照会できます。

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 コードを取得するための次の 3 つの異なる方法があります:

Windows 環境では二重引用符を使用し、Linux 環境では一重引用符を使用して完了してみてください。

PHP で指定されたファイルを実行させます。

php my_script.php 
php -f  "my_script.php"

上記のどちらの方法でも (-f パラメーターの有無にかかわらず)、指定された my_script.php ファイルを実行できます。実行するファイルを選択できます。指定する PHP スクリプトには、.php 拡張子を付ける必要はありません。任意のファイル名と拡張子を付けることができます。

コマンドラインから直接PHPコードを実行します。

php -r "print_r(get_define_constants());"

このメソッドを使用する場合は、シェル変数の置換と引用符の使用に注意してください。

注: 上記の例をよく読んでください。コードの実行時には開始マーカーと終了マーカーはありません。 -r パラメーターを使用すると、これらのマーカーは不要になり、構文エラーが発生します。

標準入力 (stdin) 経由で実行する必要がある PHP コードを提供します。

上記の使用法により、次の例に示すように、PHP コードを動的に生成し、コマンド ラインからこれらのコードを実行できるようになります。 txt


上記の 3 つのコード実行方法を同時に使用することはできません。

すべてのシェル アプリケーションと同様、PHP バイナリ (php.exe ファイル) とそれが実行する PHP スクリプトは一連のパラメータを受け入れることができます。 PHP には、スクリプトに渡される引数の数に制限がありません (シェルにはコマンド ラインの文字数に制限がありますが、通常はその制限を超えることはありません)。スクリプトに渡される引数は、グローバル変数 $argv で使用できます。この配列のインデックスが 0 のメンバーはスクリプトの名前です (PHP コードが標準入力から取得され、-r パラメーターを使用してコマンド ラインから直接実行される場合、名前は「-」になります)。さらに、グローバル変数 $argc には、$argv 配列内のメンバー変数の数が格納されます (スクリプト プログラムに渡されるパラメーターの数ではありません)。

スクリプトに送信するパラメーターが - 記号で始まらない限り、特に注意を払う必要はありません。 - で始まるパラメータをスクリプトに渡すと、PHP がこれらのパラメータを自分で処理する必要があると判断するため、エラーが発生します。この問題は、パラメーター リストの区切り文字 -- を使用することで解決できます。 PHP がパラメータを解析した後、この記号の後のすべてのパラメータがそのままスクリプトに渡されます。

# 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明:
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]
 
# 以下命令将会把“-h”参数传送给脚本程序,PHP 不会显示命令行模式的使用说明:
$ 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 で強調表示されたバージョンを生成し、結果を標準出力に書き込みます。このプロセスでは、 [...] の HTML タグ ブロックが生成されるだけであり、HTML ヘッダーは含まれないことに注意してください。

注: このオプションは、-r パラメーターと一緒に使用することはできません。

-w

コメントとスペースを削除したソースコードを表示します。

注: このオプションは、-r パラメーターと一緒に使用することはできません。

-f

指定されたファイル名を解析して実行します。このパラメータはオプションであり、実行する必要があるファイル名を指定するだけで追加する必要はありません。

-v

PHP、PHP SAPI、Zendのバージョン情報を標準出力に書き込みます。例:

$ php -v PHP 4.3.0-dev (cli)、著作権 (c) 1997-2002 The PHP Group Zend Engine v1.3.0、著作権 (c) 1998-2002 Zend Technologies

-c

使用方法 このパラメータには、php.ini ファイルが配置されているディレクトリを指定することも、ファイル名が php.ini 以外のカスタム INI ファイルを直接指定することもできます。例:

$ php -c /custom/directory/ my_script.php $ php -c /custom/directory/custom-file.ini my_script.php

-a

PHP を対話的に実行します。

-d

このパラメータを使用して、php.ini ファイル内の変数の値を設定します。 構文は次のとおりです:

-dconfiguration_directive[=value]

例:

# 値の部分を省略すると、指定された設定ディレクティブを「1」に設定します $ php -d max_execution_time -r '$foo = ini_get("max_execution_time"); 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 コードの構文チェックを行う便利な方法を提供します。成功すると、「 で構文エラーが検出されませんでした」という文字列が標準出力に書き込まれ、シェルは値 0 を返します。失敗すると、 の解析エラーが内部パーサー エラー メッセージとともに標準出力に書き込まれ、シェルの戻り値が 255 に設定されます。

このパラメータでは致命的なエラー (未定義の関数など) をチェックすることはできません。致命的なエラーを検出したい場合は、-f パラメータを使用してください。

注: このパラメータは -r と一緒に使用できません。

-m

このパラメータを使用すると、PHP は組み込みおよびロードされた PHP モジュールと Zend モジュールを出力します:

$ php -m [PHP モジュール] xml tokenizer standard session posix pcre overload mysql mbstring ctype [Zend モジュール] ]

-i このコマンドラインパラメータは phpinfo() 関数を呼び出し、結果を出力します。 PHP が正しく動作しない場合は、php -i コマンドを実行して、情報テーブルの前または対応する場所にエラー メッセージが出力されているかどうかを確認することをお勧めします。出力コンテンツは HTML 形式であるため、出力される情報が大きくなることに注意してください。

-r

このパラメータを使用して、コマンドラインで PHP コードを実行します。 PHP の開始識別子と終了識別子 () を追加する必要はありません。追加しないと、構文解析エラーが発生します。

注: この形式の PHP を使用する場合は、シェル環境によって実行されるコマンド ライン パラメーターの置換との競合を避けるために特別な注意を払う必要があります。

構文解析エラーを示す例

$ php -r "$foo = get_dependent_constants();" コマンドラインコード(1) : 解析エラー - 解析エラー、予期せぬ '='

ここでの問題は、二重引用符がすぐに使用されていることです。 ", sh/bash は依然としてパラメータ置換を実装しています。$foo が定義されていないため、その位置は置換後に null 文字になります。したがって、実行時に PHP によって実際に読み取られるコードは次のとおりです。

$ php - r " = get_dependent_constants( );"

正しい方法は一重引用符 ' を使用することです。一重引用符で囲まれた文字列では、変数は sh/bash

$ php -r '$ によって元の値に復元されません。foo = get_dependent_constants( ); var_dump($foo);' array(370) { ["E_ERROR"]=> int(1) ["E_PARSE"]=> ["E_NOTICE"]=> int(8) ["E_CORE_ERROR"]=> [...]

sh/bash 以外のシェルを使用している場合は、他の問題が発生する可能性があります。発生したバグを報告してください。または、phpdoc@lists.php.net に電子メールを送信してください

シェル環境変数を horse に導入しようとしたり、バックスラッシュを使用して文字をエスケープしようとしたりすると、さまざまな問題が発生する可能性があります

注意: -r CLI SAPI では有効ですが、CGI SAPI では無効です

-h このパラメータを使用すると、これらのパラメータの機能の簡単な説明を取得できます。

PHP のコマンド ライン モードでは、PHP スクリプトが使用できます。 WEB サーバーから完全に独立して実行するには、PHP スクリプトの先頭に特別なコード行を追加して、実行に使用するプログラムをシステムが認識できるようにする必要があります。 Windows プラットフォームでは、php.exe および .php ファイルのダブルクリック属性を関連付けることができます。また、Unix システム用に追加されたコードの最初の行は、そのためのバッチ ファイルを作成することもできます。 Windows でのスクリプトの実行には影響しないため、この方法を使用してクロスプラットフォーム スクリプトを作成することもできます。

を実行してみる。コマンドラインからの PHP スクリプト (script.php)

#!/usr/bin/phpこれは 1 つのオプションを持つコマンドライン PHP スクリプトです。 使用法:

上記のスクリプトでは、特別なコードの最初の行を使用して、ファイルが PHP によって実行される必要があることを示しています。ここでは CLI バージョンを使用しているため、HTTP ヘッダーは出力されません。 PHP でコマンド ライン アプリケーションを作成する場合、$argc と $argv の 2 つのパラメーターを使用できます。前の値は、パラメータの数より 1 大きい整数です (実行中のスクリプトの名前もパラメータとみなされます)。 2 番目にはパラメーターの配列が含まれており、その最初の要素はスクリプトの名前で、添え字は数値 0 ($argv[0]) です。

上記のプログラムでは、パラメーターの数が 1 より大きいか 1 より小さいかをチェックしました。パラメータが --help、-help、-h、または -? の場合でも、ヘルプ情報を出力し、同時にスクリプトの名前を動的に出力します。他のパラメータを受信した場合は、それらも表示します。

上記のスクリプトを Unix で実行したい場合は、それを実行可能スクリプトにして、script.php echothis または script.php -h を実行するだけです。 Windows では、このためのバッチ ファイルを作成できます:

@c:phpcliphp.exe script.php %1 %2 %3 %4

関連する推奨事項:

PHP コマンドライン実行の詳細な説明

PHP は Linux コマンド ラインを呼び出してファイル圧縮コマンドを実行します_PHP チュートリアル

PHP でのコマンド ラインの実行

以上がPHPコマンドラインの実行例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。