我编写了PHP代码来执行shell命令
<?php exec("phing"); ?>
浏览器根本无效。
但我分析的是,它运行相同的命令需要“sudo”权限。我不知道如何允许我的PHP文件以sudo执行此commn?
请指导
答案 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>