好的,所以我想将目录的文件模式更改为 777,所以我使用该行
exec('chmod -R 777' . $dir);
其中 $dir 是我想要更改的目录的目录路径
它似乎不起作用,但我没有收到错误,而且如果我执行脚本的用户是 sudo 用户,所以我在输入命令后必须输入密码,怎么办我做这个?会是类似 exec('chmod -R 777' . $dir\n 'password');
吗?
最佳答案
我从中得到的信息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
假设您希望使用 super 用户 (root) 权限运行 iptables 和 du。但是,如果您希望使用 super 用户权限运行每个应用程序,请添加以下内容而不是上面的内容
www-data ALL=NOPASSWD: ALL
3.就是这样,现在在 .php 脚本中按以下方式使用 exec()
exec("sudo iptables -P FORWARD ACCEPT");
关于PHP 执行外部命令 - 当需要用户名和密码时如何执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644066/