見出し画像

PHPをCLIで実行する方法

 PHPはWebサーバー経由だけでなく、CLI(Command Line Interface)上でも実行可能です。CLIとはキーボードのみで画面操作を行うシステムのことを指します。コマンドラインと呼ぶこともあります。
 関数の戻り値をササッと確認したい時や、ちょっとしたコードを試したい時に便利です。
 コマンドラインでPHPを実行するにはphpコマンドにパスが通っている必要があります。パスの通し方は下記の記事を参考にしてください。


筆者の開発環境

PC:Apple M1 チップ搭載MacBook Air
OS:macOS Ventura 13.6
PHP:8.2.0

特定のファイルを実行する場合

 下記のようにファイル名を指定してPHPコマンドを実行することができます。

php -f /path/to/test.php

「-f」スイッチはなくてもかまいません。

php /path/to/test.php

 試してみましょう。ターミナルを起動してください。下記のコマンドを実行し新しくファイルを作成してください。

touch test.php

vimで編集しましょう。

vim test.php

 「i」(小文字のアイ)を入力し、insertモードにしてください。下記のコードを入力してください。

<?php
echo 'Hello World';

 入力が完了したらescキーを押して「:wq」と入力し保存して閉じてください。下記のコマンドを実行し「Hello World」と出力されるか確認してください。

php test.php

 改行は「PHP_EOL」を使用します。もう一度vimでtest.phpを開いてください。

vim test.php

 「i」(小文字のアイ)を入力し、insertモードにしてください。下記のようにコードを修正してください。

<?php
echo 'Hello World' . PHP_EOL;
echo 'Good Bye' . PHP_EOL;

 入力が完了したらescキーを押して「:wq」と入力し保存して閉じてください。下記のコマンドを実行し、
 Hello World
 Good Bye
と出力されるか確認してください。

コマンドラインで直接指定する場合

 本当に短いコードであれば、下記のようにコマンドライン上で直接実行することも可能です。下記のコートでは256が出力されます。

php -r 'echo 16 ** 2;'

コマンドライン引数

 コマンドライン上で実行されるPHPに引数を渡すこともできます。下記のようにファイル名の後に「半角スペース」で区切って文字列を入力してください。

php test.php 1 10

 試してみましょう。まず、下記のコマンドを実行し、test.phpの中身をクリアしてください。

echo '' > test.php

 vimでtest.phpを開いてください。「i」(小文字のアイ)を入力し、insertモードにしてください。下記のコードを入力してください。引数1から引数2までの数字を合計します。

<?php

if ($argc !== 3) {
    echo '引数は2つ必要です。';
    exit;
}

echo array_reduce(range($argv[1], $argv[2]), function ($c, $i) {
    $c += $i;
    return $c;
});

 $argcには引数の数が代入されています。なぜ「3」かというと、入力された引数は$argvの中に入っていますが、1つめの要素に実行されたファイル名が入っていて、それも含んだ数だからです。今回の場合はtest.phpが入っています。
 $argv[1]には「1」が、$argv[2]には「10」が、それぞれ入っていますので、range関数の引数にそれぞれを渡しています。
 入力が完了したらescキーを押して「:wq」と入力し保存して閉じてください。
 実行してみましょう。55と表示されます。

php test.php 1 10

直接指定でも変数を渡すことが可能です。

php -r 'echo $argv[1] + $argv[2];' 1 2

 ちなみに直接指定の場合$argv[0]にはファイル名の代わりに「Standard input code」と入っています。

解説は以上です。おつかれさまでした。

PHP/Laravelのシステム開発は株式会社パパグラムへぜひご相談ください。

この記事が気に入ったらサポートをしてみませんか?