在php中使用 exec/ system/passthru/shell_exec 爬过的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 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文件可写权限

猜你喜欢

转载自blog.csdn.net/fmyzc/article/details/81777224