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

PHP执行外部命令-如何在需要用户名和密码时使用,php,exec,Php,Exec,好的,我想把一个目录的文件模式改为777,所以我使用行 exec('chmod -R 777' . $dir); 其中$dir是我要更改的目录的目录路径 它似乎不起作用,但我没有得到一个错误,而且如果我从中执行脚本的用户是sudo用户,因此我必须在输入命令后输入密码,我将如何做到这一点?它是否类似于exec('chmod-R 777'.$dir\n'password')?我从中获得的信息 通过PHP执行系统命令 很多时候,我们需要在Linux系统上执行系统命令——删除目录或重新启动服务。但是,

好的,我想把一个目录的文件模式改为777,所以我使用行

exec('chmod -R 777' . $dir);
其中$dir是我要更改的目录的目录路径


它似乎不起作用,但我没有得到一个错误,而且如果我从中执行脚本的用户是sudo用户,因此我必须在输入命令后输入密码,我将如何做到这一点?它是否类似于
exec('chmod-R 777'.$dir\n'password')

我从中获得的信息

通过PHP执行系统命令

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

解决这个问题的方法非常简单,特别是在Ubuntu上。Apache的用户www数据需要被授予使用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”)

这里我只是复制粘贴了该网站的内容,因为即使链接断开,这也可能有帮助。@seanyt123如果此答案解决了您的问题,请接受答案这可能会通过单击否决符号下方的勾号来提高stackoverflow中答案的质量。