PHP-FPM exec结果与命令行不同

时间:2014-06-17 22:29:13

标签: php shell

我遇到一个奇怪的问题:我有一个PHP脚本正在执行此操作

<?php exec('sudo /bin/ps aux', $output, $retval) ?>
<pre><?php print_r($output); ?></pre>
<?php echo $retval; ?>

允许使用/ bin / ps命令与sudo(/ etc / sudoers)一起启动:

tv25  xxxxxx.ovh.net=(root) NOPASSWD:/bin/ps

这是一个非常简单的脚本,(验证以root身份启动的某些进程仍在运行)但我有2个不同的输出,具体取决于我的环境:

  1. 如果我使用用户tv25登录系统并从命令行启动脚本(php script.php),exrything将按预期工作。
  2. 如果我将脚本作为页面启动(Apache + PHP-FPM,以用户tv25身份运行),$ ouput是一个空数组,$ retval等于1.
  3. 我试图指出ps的完整路径,但它确实有效。尝试使用有效的shell(/ bin / sh)为命令添加前缀,但不解决。

    有关信息,我的php.ini中允许执行exec函数。

    感谢您的帮助,

    热雷米

1 个答案:

答案 0 :(得分:0)

尝试脱掉sudo(为我工作),你应该按照以下步骤运行它:

<?php exec('ps aux', $output, $retval); ?>
<pre><?php print_r($output); ?></pre>
<?php echo $retval; ?>