【发布时间】:2014-10-08 13:36:41
【问题描述】:
我想在浏览器中列出给定用户的 Cron 任务。我正在使用以下内容,通过 SSH 可以正常工作:
crontab -u 用户名 -l
输出类似:
*/2 * * * * cd /home/username/public_html/cron; php -q -c ./ cron_4.php
*/2 * * * * cd /home/username/public_html/cron; php -q -c ./ cron_3.php
*/2 * * * * cd /home/username/public_html/cron; php -q -c ./ cron_2.php
0 0 * * * cd /home/username/public_html/cron; php -q -c ./ cron_1.php
但是,当我尝试通过 PHP 执行此操作时...
$return = array();
$command = "crontab -u username -l";
passthru($command, $return);
echo "<pre>";
var_dump($return);
echo "</pre>";
我只会……
int(1)
而我期待一个包含上述每一行的数组。
我怎样才能通过 PHP 达到预期的效果?
【问题讨论】:
-
Read the docs。 passthru() 上的第二个参数是您在外部运行的任何内容的退出值。你可能想要exec()。
-
@MarcB 是“退出值”与“返回状态”的同义词吗?我确实阅读了文档并且我尝试了
exec(),但是 exec 只返回最后一行,而我需要所有这些,但是当我使用 exec 而不是 passthru 时,我得到array(0) {} -
你也可以试试us1.php.net/manual/en/…>
-
是的,返回状态,退出状态。他们都是一样的。例如如果在一个简单的 C 程序上执行一个 passthru(),它只执行
printf('foo'); exit(42);,那么你的 $return 将是 42,而不是 $foo。'foo'将被输出,而不是返回值。 -
我的意思是,我现在明白了,但我不知道。
标签: php unix cron exec passthru