在服务器环境 apache + php下,PHP函数exec()执行whoami
得到的结果是 apache
,说明是以用户apache来执行命令。
$result = exec("whoami", $outcome, $status);
var_dump($outcome);
//array(1) { [0]=> string(6) "apache" }
查看apache的配置文件/etc/httpd/conf/httpd.conf如下:
vi /etc/httpd/conf/httpd.conf
可通过给用户apache
添加可使用sudo命令
的权限,来使exec()函数
获取更高执行权限。
以超级用户(如root用户)执行 visudo
来编辑配置文件。
在配置文件中添加
apache ALL=(ALL) NOPASSWD:ALL
如下图:
至此,用户apache会有近似root的执行权限。
在执行的命令前添加sudo
,例:
$result = exec("sudo service postfix restart", $outcome, $status);
var_dump($outcome);
// array(2) {
// [0]=>
// string(25) "关闭 postfix:[确定]"
// [1]=>
// string(26) "启动 postfix: [确定]"
// }
更多关于sudo命令
的权限配置可移步
http://man.linuxde.net/sudo