PHPコマンドライン

炎欲天舞
炎欲天舞オリジナル
2018-05-17 09:09:0511351ブラウズ


  • PHPコマンドライン(CLI)パラメータの詳細な説明

    • 対話型シェルモードでPHPを実行する

    • 内蔵Webサーバーを実行する

    • PHP構成ファイルを見つける

    • クラス/関数/拡張情報の表示

    • 構文チェック

  • コマンドラインスクリプト開発

PHPは通常、WebサーバーでPHPを実行し、ブラウザを使用してアクセスします。そのため、コマンド ライン操作や関連パラメーターの使用にはほとんど注意が払われませんが、特に Unix 系オペレーティング システムでは、PHP をスクリプト言語として使用して、シェルと同様の処理タスクを実行できます。

phpコマンドライン(CLI)パラメータの詳しい説明

PHPのすべてのコマンドラインパラメータを表示するには、php -hコマンドを使用します。 PHP の機能についての理解を深め、サーバー コマンド ラインで PHP をより迅速に使用したり、環境に慣れていないために発生するさまざまな問題をデバッグしたりするために、一般的に使用されるコマンド ライン パラメーターのほとんどを 1 つずつ説明します。

-a               以交互式shell模式运行
-c | 指定php.ini文件所在的目录
-n               指定不使用php.ini文件
-d foo[=bar]     定义一个INI实体,key为foo,value为'bar'
-e               为调试和分析生成扩展信息
-f         解释和执行文件.
-h               打印帮助
-i               显示PHP的基本信息
-l               进行语法检查 (lint)
-m               显示编译到内核的模块
-r         运行PHP代码,不需要使用标签 ..?>
-B   在处理输入之前先执行PHP代码
-R         对输入的没一行作为PHP代码运行
-F         Parse and execute  for every input line
-E     Run PHP  after processing all input lines
-H               Hide any passed arguments from external tools.
-S : 运行内建的web服务器.
-t      指定用于内建web服务器的文档根目录
-s               输出HTML语法高亮的源码
-v               输出PHP的版本号
-w               输出去掉注释和空格的源码
-z         载入Zend扩展文件 .
 
args...          传递给要运行的脚本的参数. 当第一个参数以-开始或者是脚本是从标准输入读取的时候,使用--参数
 
--ini            显示PHP的配置文件名
 
--rf       显示关于函数  的信息.
--rc       显示关于类  的信息.
--re       显示关于扩展  的信息.
--rz       显示关于Zend扩展  的信息.
--ri       显示扩展  的配置信息.

PHP コマンドのすべてのパラメーターとそのコメントは上にリストされています。次に、より一般的に使用されるパラメーターの例を示します。

インタラクティブ シェル モードで php を実行する

Python を使用したことのある友人は、コマンド ラインで python コマンドを直接入力すると、Python のインタラクティブ シェル プログラムを実行できます。インタラクティブに実行されます。

PHP コマンドラインでも、-a パラメーターを使用して対話型シェルモードに入ることができます。

このシェルでは、常に新しい php ファイルを作成することなく、いくつかの単純なタスクを実行できます。

詳細な手順については、公式ドキュメントを参照してください。

組み込み Web サーバーを実行する

PHP 5.4.0 以降、PHP のコマンドライン モードは組み込み Web サーバーを提供します。 Web サービスの実行を開始するには、-S を使用します。

現在、ディレクトリ /Users/mylxsw/codes/php/aicode/demo にいるとします。このディレクトリには、index.php ファイルがあります。

$ ls
index.php
$ cat index.php
<?php echo "Hello, PHPER!";

このディレクトリで次のコマンドを実行して組み込みWebサーバーを起動し、デフォルトで現在のディレクトリを作業ディレクトリとして使用します

$ php -S localhost:8000
PHP 5.6.3 Development Server started at Wed Jun 10 15:49:41 2015
Listening on http://localhost:8000
Document root is /Users/mylxsw/codes/php/aicode/demo
Press Ctrl-C to quit.

別のシェルウィンドウを開いてhttp://localhost:8000をリクエストします/ を参照するには、スクリプトの出力に移動します

$ curl -is http://localhost:8000/
HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/5.6.3
Content-type: text/html;
 
Hello, PHPER!

Web サービスが実行されているウィンドウで、出力ログ情報を確認できます

上記の組み込みサーバーを起動したとき、-S パラメーターを指定しただけで、 PHP は Web サーバーとして実行されます。このとき、PHP は現在のディレクトリを作業ディレクトリとして使用するため、-t パラメータを使用して別のディレクトリを作業ディレクトリとして指定することもできます。 (ドキュメントのルートディレクトリ)。

詳細については、公式ドキュメントを参照してください。

PHP 設定ファイルを見つける

サーバーへのソフトウェアのインストールが混乱するため、現時点では、PHP プログラムがどの設定ファイルを使用しているかを判断することがより困難になることがあります。重要です。 PHP コマンド ライン パラメータでは、-ini パラメータが提供されます。このパラメータを使用すると、現在の PHP 構成ファイルの情報を一覧表示できます。

$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/5.6
Loaded Configuration File:         /usr/local/etc/php/5.6/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed:      (none)
 
$ /usr/local/php/bin/php --ini
Configuration File (php.ini) Path: /usr/local/php/etc/
Loaded Configuration File:         /usr/local/php/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

上記のサーバーに 2 つのバージョンの PHP をインストールしました。上記からわかるように、php –ini コマンドを使用すると、現在の PHP コマンドがどの構成ファイルを使用するかを簡単に見つけることができます。

クラス/関数/拡張機能の情報を表示する

通常、php –info コマンドを使用するか、Web サーバー上の php プログラムで関数 phpinfo() を使用して php 情報を表示し、関連するクラス、拡張機能、または関数を見つけることができます。情報、本当に困りますね。

$ php --info | grep redis
redis
Registered save handlers => files user redis
This program is free software; you can redistribute it and/or modify

次のパラメータを使用すると、この情報をより便利に表示できます

--rf       显示关于函数  的信息.
--rc       显示关于类  的信息.
--re       显示关于扩展  的信息.
--rz       显示关于Zend扩展  的信息.
--ri       显示扩展  的配置信息.

たとえば、拡張 Redis の構成情報を表示したい場合があります

$ php --ri redis
 
redis
 
Redis Support => enabled
Redis Version => 2.2.7

Redis クラスの情報を表示します

$ php --rc redis
Class [  class Redis ] {
 
  - Constants [19] {
    Constant [ integer REDIS_NOT_FOUND ] { 0 }
    ...
  - Methods [201] {
    ...
    Method [  public method echo ] {
    }
    ...

printf 関数の情報

$ php --rf printf
Function [  function printf ] {
 
  - Parameters [2] {
    Parameter #0 [  $format ]
    Parameter #1 [  ...$args ]
  }
}

構文チェック

一部のエディタや IDE で PHP ファイルに構文エラーがあるかどうかをチェックするなど、PHP スクリプトを実行せずに構文エラーがあるかどうかだけをチェックする必要がある場合があります。

PHP ファイルに対してのみ構文チェックを実行するには、-l (--syntax-check) を使用します。

$ php -l index.php
No syntax errors detected in index.php

このとき、index.phpに構文エラーがあるとします

$ php -l index.php
PHP Parse error:  syntax error, unexpected &#39;echo&#39; (T_ECHO) in index.php on line 3
 
Parse error: syntax error, unexpected &#39;echo&#39; (T_ECHO) in index.php on line 3
Errors parsing index.php

コマンドラインスクリプト開発

PHPを使用してコマンドラインスクリプトを開発する場合、Webプログラムの開発とは明らかに異なります。 URL のパラメーターを変更することで、PHP 環境にさまざまな入力を提供できますが、コマンド ライン スクリプト プログラムで外部入力を取得するにはどうすればよいでしょうか?

在使用C语言开发程序时,我们通常会在main函数中提供两个可选的参数int main(int argc, char *argv[]),这两个参数就是从命令行提供的输入参数。在PHP中,提供了两个全局变量$argc和$argv用于获取命令行输入。

  • $argc 包含了 $argv数组包含元素的数目

  • $argv 是一个数组,包含了提供的参数,第一个参数总是脚本文件名称

假设我们有一个名为console.php的命令行脚本文件

<?php echo &#39;命令行参数个数: &#39; . $argc . "n";
echo "命令行参数:n";
foreach ($argv as $index => $arg) {
    echo "    {$index} : {$arg}n";
}

在命令行下执行该脚本

$ php console.php hello world
命令行参数个数: 3
命令行参数:
    0 : console.php
    1 : hello
    2 : world

可以看到,第0个参数是我们执行的脚本名称。需要注意的是,如果提供的第一个参数是以-开头的话,需要在前面增加–,以告诉php这后面的参数是提供给我们的脚本的,而不是php执行文件的(php -r ‘var_dump($argv);’ — -h)。

另外,在脚本中,我们可以通过php_sapi_name()函数判断是否是在命令行下运行的

$ php -r &#39;echo php_sapi_name(), PHP_EOL;&#39;
cli

参考文献

  • Using PHP from the command line

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

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