好的,所以我想将目录的文件模式更改为777,所以我使用了行
exec('chmod -R 777' . $dir);
其中$ dir是我想要更改的目录的目录路径
它似乎无法正常工作,但我没有收到错误,如果我执行脚本的用户是sudo用户,所以我必须在输入后输入密码命令,我该怎么做?它会是exec('chmod -R 777' . $dir\n 'password');
吗?
答案 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");