当我使用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()
, 其中输出,但是在网页上下文中运行时会出现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);
因为目前它在 PHP 通过 Apache 以“正常”方式运行时不输出任何内容,但是在终端以及 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
在执行atq
或任何其他推荐exec()
给我输出时使用管道输入的 echo 语句没有得到任何输出。我已经搜索并阅读了这个问题,但无济于事。
如果使用带有的第二个参数,我如何才能exec()
将输出返回at
到字符串或数组exec()
?