执行PHP shell命令需要sudo访问权限

时间:2013-07-04 04:44:25

标签: php command-line exec sudo phing

我编写了PHP代码来执行shell命令

<?php exec("phing"); ?>

浏览器根本无效。

但我分析的是,它运行相同的命令需要“sudo”权限。我不知道如何允许我的PHP文件以sudo执行此commn?

请指导

2 个答案:

答案 0 :(得分:2)

执行php时,您可能不会(可能不会)在任何特定目录中。尝试指定绝对路径<?php exec("/usr/bin/phing"); ?>另外,您的意思是ping而不是phing吗?

如果网络服务器有sudo访问权限(一个非常糟糕的IDEA)没有密码(真的很糟糕!!!)来运行此命令,那么你需要将代码更改为<?php exec("/usr/bin/sudo phing"); ?>

为了能够运行sudo,您需要得到计算机管理员的帮助。我怀疑你的管理员会允许这样做,因为给网络服务器sudo访问是冒险的 - 确保网络服务器没有任何管理员权限需要付出很多努力。

答案 1 :(得分:0)

第一个问题是你试图在什么样的服务器上运行它?这是你自己的机器吗?共享主机?

可能不是它需要sudo,但它需要您的PHP脚本没有的某些权限,而sudo是解决它的一种方法。

解决此问题的更好方法是确定脚本运行的用户(可能是nobody?)并确保phing需要访问的文件归同一用户所有。这可能就像通过FTP程序更改文件所有权一样简单。

此外,不要忘记仔细检查您实际上是否在您认为自己所在的目录中。


要获取其中一些信息,请尝试运行以下PHP文件:

<pre>
<?php
passthru('id -a');    // figure out what user we're executing as
passthru('pwd');      // figure out what directory we're in
passthru('ls -l .');  // look at the permissions set on the current directory
?>
</pre>