
查看当前执行php的用户
echo shell_exec('whoami'); echo shell_exec("id -a"); //uid=997(nginx) gid=995(nginx) groups=995(nginx)
添加用户nginx到sudoers
# vi /etc/sudoers ## Allow root to run any commands anywhere //找到这行,并在root下面添加一行 , 如下: root ALL=(ALL) ALL nginx ALL=(ALL) NOPASSWD:ALL
重启nginx和php-fpm
# service nginx restart # service php-fpm restart
重点:命令转发到Shell !!(试了很多种方法,只有此方法可行)
在用户目录下新建一个xxx.sh文件
# vi /root/pdftotext.sh # 输入自己需要的命令 !/bin/bash if [ -f "$1" ];then #echo "$1"; /usr/bin/pdftotext "$1" /root/01.txt echo "$1"; fi :x! //保存退出
//加可执行权限 # chmod 777 /root/pdftotext.sh
php调用shell文件
... $pdf_path = storage_path('app/'.$name.'.pdf'); $txt_path = storage_path('app/'.$name.'.txt'); $status = shell_exec("sudo sh /root/pdftotext.sh $pdf_path $txt_path"); ... //其中 sudo使当前执行的用户变为root