如何从php脚本执行shell命令

时间:2011-07-13 21:25:44

标签: php shell-exec

我想创建一个php脚本来执行shell命令并返回其输出。服务器需要私钥。当我第一次决定测试时,我创建了这个:

<?php
$command = "ls";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>

这很好用。但当我将$command更改为我真正想要运行的命令时:

$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";

它给了我这个输出:

You need root privileges to run this script

我的猜测是我需要使用sudo。当然,这需要将pem文件放在服务器上的某个位置。假设我这样做,$command到底应该是什么?我应该使用shell_exec()exec()system()还是别的什么?

2 个答案:

答案 0 :(得分:4)

使用哪个php函数来启动脚本无关紧要 - 缺少的是您的用户帐户的授权。

使用sudo(预先配置Web服务器用户以通过visudo运行不带密码的确切命令,并在命令前添加sudo)或设置自己执行命令的setuid脚本。

答案 1 :(得分:3)

您真正需要做的是将您的网络服务器设置为以特定用户身份运行(例如,除了'nobody'),或者授予该用户对您要执行的内容的权限。

另请参阅:PHP shell_exec() and sudo: must be setuid root