ホームページ  >  記事  >  バックエンド開発  >  PHP コマンドラインの概要 shell_exec() 使用法_PHP チュートリアル

PHP コマンドラインの概要 shell_exec() 使用法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:28:101373ブラウズ

PHP の長い開発期間を経て、多くのユーザーが PHP についてよく知っています。ここで私の個人的な理解を表明し、PHP コマンドラインについて説明します。 PHP コマンド ライン インターフェイス (CLI) サーバー アプリケーション プログラミング インターフェイス (SAPI) は、PHP V4.2.0 以降、実験目的でリリースされました。 V4.3.0 では完全にサポートされており、デフォルトで有効になっています。

PHP CLI SAPI を使用すると、PHP でサポートされるシェル スクリプト (デスクトップ ベースのスクリプトも含む) を開発できます。実際、このツールは PHP コマンド ラインから実行できます。このようにして、PHP 開発者は、Perl、AWK、Ruby、またはシェル プログラマーと同じくらい生産性を高めることができます。この記事では、PHP が実行される基盤となるシェル環境とファイル システムを理解できるようにするために、PHP に組み込まれているツールについて説明します。 PHP は、shell_exec()、exec()、passthru()、system() など、外部コマンドを実行するための関数を多数提供します。これらのコマンドは似ていますが、実行する外部プログラムに対して異なるインターフェイスを提供します。これらのコマンドはすべて、指定したコマンドまたはスクリプトを実行する子プロセスを生成し、各子プロセスは標準出力 (stdout) に書き込まれるコマンド出力をキャプチャします。
<ol class="dp-xml"><li class="alt"><span><span>shell_exec() </span></span></li></ol>

shell_exec() コマンドラインは実際にはバッククォート (`) 演算子のバリエーションにすぎません。シェルまたは Perl スクリプトを作成したことがある場合は、バックティック演算子内で他のコマンドの出力をキャプチャできることをご存知でしょう。たとえば、リスト 1 は、バッククォートを使用して、現在のディレクトリ内の各テキスト (.txt) の単語数を取得する方法を示しています。

PHP コマンドラインの概要

リスト 1. バッククォートを使用した単語数のカウント

<ol class="dp-xml">
<li class="alt"><span><span>#! /bin/sh  </span></span></li>
<li class="">
<span></span><span class="attribute"><font color="#ff0000">number_of_words</font></span><span>=`wc -w *.txt`  </span>
</li>
<li class="alt"><span>echo $number_of_words  </span></li>
<li class=""><span> </span></li>
<li class="alt"><span>#result would be something like:  </span></li>
<li class=""><span>#165 readme.txt 388 results.txt 588 summary.txt  </span></li>
<li class="alt"><span>#and so on....  </span></li>
</ol>

PHP スクリプトでは、リスト 2 に示すように、shell_exec() でこの単純なコマンドを実行し、目的の結果を得ることができます。ここでは、同じディレクトリにいくつかのテキストファイルが存在すると仮定します。

リスト 2.shell_exec() で同じコマンドを実行します

<ol class="dp-xml"><li class="alt">
<span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute><FONT color=#ff0000>results</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>shell_exec</FONT></SPAN><SPAN>('wc -w *.txt');  </SPAN></SPAN><LI class=alt><SPAN>echo $results;  </SPAN><LI class=""><SPAN></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?></span></font></strong></span><span> </span>
</li></ol>

以下に示すように、末尾のアポストロフィ演算子を使用するだけでも同じ結果が得られることに注意してください。

リスト 3. 末尾のアポストロフィ演算子のみを使用する

<ol class="dp-xml"><li class="alt">
<span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute><FONT color=#ff0000>results</FONT></SPAN><SPAN> = `wc -w *.txt`;  </SPAN></SPAN><LI class=alt><SPAN>echo $results;  </SPAN><LI class=""><SPAN></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?></span></font></strong></span><span> </span>
</li></ol>

リスト 4. より簡単な方法

<ol class="dp-xml"><li class="alt">
<span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>echo `wc -w *.txt`;  </SPAN><LI class=alt><SPAN></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?></span></font></strong></span><span> </span>
</li></ol>

UNIX コマンド ラインとシェル スクリプトを使用して多くのことが実行できることを知っておくことが重要です。たとえば、パイプを使用してコマンドを接続できます。演算子を使用してシェル スクリプトを作成し、そのシェル スクリプトを呼び出すこともできます (必要に応じて引数の有無にかかわらず)。たとえば、そのディレクトリ内の最初の 5 つのテキスト ファイル内の単語のみをカウントしたい場合は、パイプ (|) を使用して wc コマンドと head コマンドを接続できます。あるいは、以下に示すように、出力を pre タグ内に配置して、Web ブラウザーでより美しくレンダリングすることもできます。

リスト 5. より複雑なシェル コマンド

<ol class="dp-xml">
<li class="alt"><span><strong><font color="#006699"><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN></FONT></STRONG><SPAN> </SPAN></SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute><FONT color=#ff0000>results</FONT></SPAN><SPAN> = </SPAN><SPAN class=attribute-value><FONT color=#0000ff>shell_exec</FONT></SPAN><SPAN>('wc -w *.txt | head -5');  </SPAN></SPAN><LI class=alt><SPAN>echo "</SPAN><STRONG><FONT color=#006699><SPAN class=tag><</SPAN><SPAN class=tag-name>pre</SPAN><SPAN class=tag>></span></font></strong><span>".$results . "</span><strong><font color="#006699"><span class="tag"></</SPAN><SPAN class=tag-name>pre</SPAN><SPAN class=tag>></span></font></strong><span>";  </span></span></li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>

この記事の後半では、PHP を使用してこれらのスクリプトに引数を渡す方法を学びます。これをシェル コマンドを実行する方法と考えることができますが、表示できるのは標準出力のみであることに注意してください。コマンドまたはスクリプトでエラーが発生した場合、パイプ経由で標準エラー (stderr) を stdout に追加しない限り、標準エラー (stderr) は表示されません。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446471.html技術記事 PHP の開発に長い期間を費やしてきたため、多くのユーザーは PHP についてよく知っています。ここでは、私の個人的な理解を表明し、PHP コマンド ラインについて説明します。 PHP コマンド ライン インターフェイス (CLI) サーバー アプリケーション...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。