php执行linux命令笔记

《php执行linux命令笔记》

查看当前执行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
点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注