版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fmyzc/article/details/81777224
问题描述:
在命令行中执行一个php/py文件,没有问题。
当在php框架中用exec等函数调用外部命令时,发现怎么也得不到想要的内容,各种奇葩返回。
解决过程:
经查看,执行php时用户为www-data,权限过低,无法操作。
public function testtest(){
echo exec('whoami');die;
}
www-data是默认运行web服务的用户/组,一般在通过apt安装web服务程序时生成。搭建web服务的文件夹/文件一般要设置成www-data的。
解决方法:
1.sudo su 切换到root
2.chmod u+w /etc/sudoers 赋予/etc/sudoers文件可写权限
3.vim /etc/sudoers 编辑sudoers文件
root ALL=(ALL:ALL) ALL
www-data ALL=(ALL) NOPASSWD:ALL
4.chmod u-w /etc/sudoers 去除/etc/sudoers文件可写权限