Unix システム コマンドexec()
を使用してタスクを追加するときに、出力をキャプチャしようとして、 と格闘してきました。at
私の問題は、スクリプトから実行したときに出力が得られないことですが、ターミナルとPHP から対話モードで実行すると、数行が出力されます。
実行したいコマンドは次のとおりです。
echo exec("echo 'php -f /path/to/file.php foo=1' | at now + 1 minutes", $result);
var_dump()
を与えstring(0) ""
、print_r()
吐き出すArray ()
。を使用してみましたがshell_exec()
、これは を出力しますが、Web ページのコンテキストで実行するとNULL
次のように出力されます。hi
echo exec("echo 'hi'");
これも出力します:
echo exec("atq");
しかし、使用するとすぐat
に何も出力されません。次の出力を取得するにはどうすればよいですか。
exec("echo 'php -f /path/to/file.php foo=1' | at now + 1 minutes", $result);
現在、Apache を介して PHP で「通常」として実行すると何も出力されないため、ターミナルと PHP の対話型コンソールでコマンドを実行すると、次のような期待される結果が得られます。
php > echo exec("echo 'php -f /path/to/file.php foo=1' | at now + 1 minutes", $result);
warning: commands will be executed using /bin/sh
job 1219 at Sun Jun 10 12:43:00 2012
safe_mode
at
がオフになっていて、実行時にパイプで挿入された echo ステートメントで出力が得られない理由がatq
わかりexec()
ません。この質問を検索して読みましたが、すべて役に立ちませんでした。
で2番目の引数を使用する場合、出力を文字列または配列exec()
に返すにはどうすればよいですか?at
exec()