1

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

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

这在浏览器中根本不起作用。

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

请指导

4

2 回答 2

2

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

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

为了能够运行 sudo,您需要计算机管理员的帮助。我怀疑您的管理员是否会允许这样做,因为授予网络服务器 sudo 访问权限是有风险的 - 需要做大量工作来确保网络服务器没有任何类型的管理员权限。

于 2013-07-04T04:48:11.943 回答
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>
于 2013-07-04T04:49:25.363 回答