この記事では、主に 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
モジュールには、実行する PHP コードを取得するための次の 3 つの異なるメソッドがあります:
Windows 環境では二重引用符を使用してください。Linux 環境では二重引用符を使用してください。環境では二重引用符を使用してください。完了するには一重引用符を使用してください。
で実行させます。
パラメーターの有無にかかわらず) で、指定された my_script.php ファイルを実行できます。実行するファイルを選択できます。指定する PHP スクリプトには、拡張子 .php を付ける必要はありません。
コードを直接実行します。
注:上記の例をよく読んでください。コードを実行するときに開始マーカーと終了マーカーはありません。 -r パラメーターを使用すると、これらのマーカーは不要になり、構文エラーが発生します。
) 経由で実行する必要がある PHP コードを提供します。 上記の使用法により、非常に強力な関数が提供され、次の例に示すように、
PHPコードを動的に生成し、コマンド ラインからこれらのコードを実行できるようになります。
以上三种运行代码的方法不能同时使用。
和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但您通常都不会超过该限制)。传递给您脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 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); ?> ログイン後にコピー <span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span>
|
假设改文件名为 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 で強調表示されたバージョンを生成し、結果を標準出力に書き込みます。このプロセスでは、
|
-w |
は、コメントとスペースを削除したソースコードを示しています。
|
-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 ファイルが配置されるディレクトリを指定するか、カスタム を直接指定できます。 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ファイル内の変数の値を設定します。構文は次のとおりです: -dconfiguration_directive[=value]例: # 値の部分を省略すると、指定された設定ディレクティブが「1」に設定されます $ php -d 最大実行時間 -r '$foo = ini_get("max_execution_time");' 文字列(1) "1" # 空の値部分を渡すと、設定ディレクティブが "" に設定されます php -d 最大実行時間= -r '$foo = ini_get("max_execution_time");' 文字列(0) "" # 構成ディレクティブは、「=」文字の後に渡されたものに設定されます $ php -d 最大実行時間=20 -r '$foo = ini_get("max_execution_time");' 文字列(2) "20" $php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time");' string(15) "doesntmakesense" |
-e | デバッガなどの拡張情報を生成します。 |
-z | Zend 拡張ライブラリをロードします。ファイル名のみが指定されている場合、PHP はシステムの拡張ライブラリのデフォルト パスから拡張ライブラリをロードしようとします (Linux システムでは、このパスは通常 /etc/ld.so.conf によって指定されます)。ファイル名を絶対パスで指定した場合、拡張ライブラリへのシステムのデフォルトのパスは使用されません。ファイル名が相対パスで指定されている場合、PHP は現在のディレクトリを基準とした相対的な拡張子のロードのみを試みます。 |
-l |
このパラメータは、指定された PHP コードの構文チェックを行う便利な方法を提供します。成功すると、 -fパラメータを使用してください。
|
このパラメータを使用すると、PHP は組み込みおよびロードされた PHP モジュールと Zend モジュールを出力します: $ php -m [PHPモジュール] XML トークナイザー 標準 セッション ポジックス ピークレ 過負荷 mysql mbstring ctype [Zend モジュール] |
|
このコマンドラインパラメータは | phpinfo()関数を呼び出し、結果を出力します。 PHPが正しく動作しない場合は、php -iコマンドを実行して、情報フォームの前または対応する場所にエラーメッセージが出力されているかどうかを確認することをお勧めします。出力コンテンツは HTML 形式であるため、出力情報が大きくなることに注意してください。 |
このパラメータを使用して、コマンドラインで PHPコードを実行します。 PHP の開始識別子と終了識別子 ( と ?>) を追加するために を追加する必要はありません。追加しないと、構文解析エラーが発生します。
|
|
-h | このパラメータを使用すると、コマンド ライン パラメータの完全なリストと、これらのパラメータの機能の簡単な説明を取得できます。 |
PHP のコマンドライン モードを使用すると、PHP スクリプトを WEB サーバーから完全に独立して実行できます。 Unix システムを使用している場合は、スクリプトの実行に使用するプログラムをシステムが認識できるように、PHP スクリプトの先頭に特別なコード行を追加して実行できるようにする必要があります。 Windows プラットフォームでは、php.exe および .php ファイルのダブルクリック属性を関連付けたり、PHP を使用してスクリプトを実行するバッチ ファイルを作成したりできます。 Unix システム用に追加されたコードの最初の行は、Windows でのスクリプトの実行には影響しないため、この方法を使用してクロスプラットフォーム スクリプトを作成することもできます。以下は、単純な PHP コマンド ライン プログラムの例です。
例 23-1. コマンドラインから 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 では、このバッチ ファイルを作成できます:
|
以上がPHP でのコマンドラインの実行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。