BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

コマンドラインからPHPを実行する方法(Bash / Shell)

この記事では、Bashシェル/コマンドラインからPHPを使用する方法を例を挙げて簡単に説明します。

PHPは通常、Webで提供されるコンテンツを生成するために使用されますが、コマンドラインから使用することもできます。

これは通常、PHP環境に関する情報をテストまたは検索する目的で行われますが、PHPはコマンドラインスクリプトの記述にも使用できます(ただし、実際にはそれほど頻繁には実行されませんが、おそらくより優れているためです。代替案 。

シェルから直接PHPコマンドを実行する

PHPコマンドは、 -rを使用してコマンドラインから直接実行できます。 (実行)オプション:

php -r 'phpinfo();'

上記、 phpinfo() 関数が呼び出されます。複数行のコードをセミコロンで区切って渡すか、ヒアドキュメント(複数行のBash変数)をパイプで渡すことができます。

パラメータ/引数

パラメータ/引数は、 $ argvを使用してPHPに渡すことができます 変数。PHPをコマンドラインから実行するときに使用できます。

php -r 'echo $argv[1]; echo $argv[2];' "foo" "bar"

上記の最初のパラメータには、 $ argv [1]を使用してアクセスします $ argv [2]を使用する2番目のパラメータ 。

$ argv PHPがコマンドラインから呼び出された場合にのみアクセスできる配列です。配列の最初の項目は、スクリプトを実行するために呼び出されるPHP実行可能ファイルの名前になり、配列の次の項目は、出現順に渡されるパラメーターになります。

スクリプトファイルを実行する

PHPファイルは、ファイルへのパスを指定することにより、コマンドラインから実行できます。

php script.php

または

php -f script.php

-f オプションは必須ではありませんが、わかりやすくするために指定できます。

PHPコマンドラインオプションの完全なリストはここにあります。

パラメータ/引数

コマンドラインから直接PHPを実行する場合と同様に、 $ argvを使用してパラメータにアクセスできます。 同じ方法でコマンドラインからスクリプトを実行する場合の配列。

コマンドラインから実行されているかどうかの確認

$ argvのように 、 $ argc コマンドラインから実行している場合にのみ存在します。スクリプトに渡されたパラメータ/引数の数が含まれています。

存在する場合は、コマンドラインで実行しています!

if (isset($argc)) {
    // PHP was called from the command line 
}

STDIN/STDOUTおよびPHP

他のコマンドラインアプリケーションの場合と同様に、標準のリダイレクトを使用して、PHPにコマンドをフィードしたりPHPからデータを処理したりできます。

echo 'Green trees' | php -r 'echo file_get_contents("php://stdin");'

上記のテキスト「Greentrees」はPHPにパイプされ、PHPはSTDINのファイルを読み取り、それを繰り返します。


  1. Bashスリープ–シェルスクリプトをN秒待機させる方法(コマンド例)

    シェルスクリプトを作成しているときに、続行する前に特定の秒数待機する必要がある場合があります。たとえば、プロセスが完了するまで、または失敗したコマンドを再試行する前に、スクリプトを待機させたい場合があります。 これを行うには、非常に単純なsleepを使用できます。 指図。 Bashスリープコマンドの使用方法 Sleep は非常に用途の広いコマンドで、構文は非常に単純です。 sleep Nと入力するのと同じくらい簡単です 。これにより、Nのスクリプトが一時停止します 秒、N 正の整数または浮動小数点数のいずれかです。 この基本的な例を考えてみましょう: echo Hello ther

  2. Bashを楽しい方法で学ぶための3つのコマンドラインゲーム

    学習は大変な仕事であり、誰も仕事が好きではありません。つまり、Bashを習得するのがどれほど簡単であっても、それでもあなたにとっては仕事のように感じるかもしれません。もちろん、ゲームを通して学ばない限り。 Bashターミナルの使い方を教えるゲームがたくさんあるとは思わないでしょうし、あなたは正しいでしょう。真面目なPCゲーマーは、Falloutシリーズがボールトに端末ベースのコンピューターを備えていることを知っています。これは、テキストを介してコンピューターとやり取りするという考えを正常化するのに役立ちますが、AlpineやEmacsのようなアプリケーションを備えているにもかかわらず、Fal