我一直在使用exec()
,尝试在使用at
Unix系统命令添加任务时捕获其输出。我的问题是,当从我的脚本运行时,它没有产生任何输出,然而在终端和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
已关闭,但我不知道为什么使用管道输入echo
语句给at
命令没有输出,而使用exec()
执行atq
或其他命令则有输出。我已经搜索和阅读了这个问题,但都没有成功。
我该如何让exec()
将at
命令的输出返回为字符串或者数组(如果使用exec()
的第二个参数)?
sudo atq
列出新任务。 - Bojangles