PHP执行外部命令 - 如何在需要用户名和密码时

时间:2014-09-03 12:15:50

标签: php exec

好的,所以我想将目录的文件模式更改为777,所以我使用了行

exec('chmod -R 777' . $dir);

其中$ dir是我想要更改的目录的目录路径

它似乎无法正常工作,但我没有收到错误,如果我执行脚本的用户是sudo用户,所以我必须在输入后输入密码命令,我该怎么做?它会是exec('chmod -R 777' . $dir\n 'password');吗?

1 个答案:

答案 0 :(得分:1)

我从site

获得的信息

通过PHP执行系统命令

我们需要在Linux系统上执行系统命令 - 删除目录或重新启动服务。但是,由于Apache不以root权限运行,因此几乎不可能使用PHP的exec(),system()或passthru()函数来实现这一点。

解决方案非常简单,特别是在Ubuntu上。 Apache的用户www-data需要被授予使用sudo执行某些应用程序的权限。

1.运行命令sudo visudo

2.在文件末尾添加以下内容

www-data ALL=NOPASSWD: /sbin/iptables, /usr/bin/du

这假设您希望使用超级用户(root)权限运行iptables和du。但是,如果您希望使用超级用户权限运行每个应用程序,请添加以下内容而不是上面的内容

www-data ALL=NOPASSWD: ALL

3.就是这样,现在在.php脚本中以下列方式使用exec()

exec ("sudo iptables -P FORWARD ACCEPT");