我已经编写了 PHP 代码来执行 shell 命令
<?php exec("phing"); ?>
这在浏览器中根本不起作用。
但我分析的是,它运行相同的命令需要“sudo”权限。我不确定如何允许我的 PHP 文件以 sudo 的形式执行此命令?
请指导
我已经编写了 PHP 代码来执行 shell 命令
<?php exec("phing"); ?>
这在浏览器中根本不起作用。
但我分析的是,它运行相同的命令需要“sudo”权限。我不确定如何允许我的 PHP 文件以 sudo 的形式执行此命令?
请指导
执行 php 时,您可能不会(可能不会)在任何特定目录中。尝试指定绝对路径<?php exec("/usr/bin/phing"); ?>
另外,你的意思是ping
而不是phing
?
如果网络服务器具有 sudo 访问权限(一个非常糟糕的想法)而没有密码(一个非常糟糕的想法!!!)来运行这个命令,那么你需要将你的代码更改为<?php exec("/usr/bin/sudo phing"); ?>
为了能够运行 sudo,您需要计算机管理员的帮助。我怀疑您的管理员是否会允许这样做,因为授予网络服务器 sudo 访问权限是有风险的 - 需要做大量工作来确保网络服务器没有任何类型的管理员权限。
第一个问题是你想在什么样的服务器上运行它?是你自己的机器吗?共享主机?
可能不是它需要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>