源泉掛け流しエンジニアブログ

パブリックな個人の技術メモでございます

PHPファイル内で別のPHPファイルを引数付きで実行して戻り値を受け取る

以下の記事の内容を把握しているとより理解しやすいと思います。 engineertrip.hatenablog.com

PHPファイルを実行する処理
<?php
$cmd  = exec('which php').' '; // PHPの実行コマンドのフルパスを取得
$cmd .= exec('pwd').'/';       // ドキュメントルートを取得
$cmd .= 'A2.php'.' ';          // PHPファイルパスを指定
$cmd .= 'abc';                 // 引数を指定
exec($cmd, $output, $status);
var_dump($output[0]);
exit;
実行されるPHPファイル
<?php
echo $argv[1]; // abc
exit;
実行結果
string(3) "abc"


連想配列の戻り値を受け取る

JSON形式の文字列を返却して実行側でjson_decode()を使用することによって、連想配列として受け取ることができる。

PHPファイルを実行する処理
<?php
$cmd  = exec('which php').' '; // PHPの実行コマンドのフルパスを取得
$cmd .= exec('pwd').'/';       // ドキュメントルートを取得
$cmd .= 'B2.php'.' ';          // PHPファイルパスを指定
$cmd .= 'abc'.' '.'def';       // 引数を指定
exec($cmd, $output, $status);
var_dump(json_decode($output[0], true));
exit;
実行されるPHPファイル
<?php
echo '{"a":"'.$argv[1].'", "b":"'.$argv[2].'"}'; // {"a":"abc", "b":"def"}
exit;
実行結果
array(2) {
  ["a"]=>
  string(3) "abc"
  ["b"]=>
  string(3) "def"
}

LinuxのphpコマンドでPHPファイルを引数ありで実行する

PHPのインストールについては省きます。

php {PHPファイルパス} {引数1} {引数2} ...
引数をつけたコマンドを実行する
php example.php 1 2 3
PHPファイル側で引数の受け取る
<?php
echo $argv[0]; // example.php
echo $argv[1]; // 1
echo $argv[2]; // 2
echo $argv[3]; // 3