首先,你要确保你有足够的权限去执行shell文件。

1.执行命令

visudo

Defaults requiretty

这一行注释掉,因为默认的情况下,执行sudo需要一个终端,这里注释掉就可以了

2.设置apache、nginx的启动用户的sudo权限

格式:

name ALL=(特定用户) NOPASSWD:需要sudo权限去执行的程序、脚本

先查找nginx的用户

ps -ef | grep nginx
www       4243  4240  0 10:20 ?        00:00:00 nginx

好,在/etc/sudoers中(也就是执行visudo)

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
www     ALL=(root)      NOPASSWD:/xxxx/mysqlbaktemp.sh,/xxxx/mysqlimport.sh      #每个脚本逗号隔开

这样,wwww这个用户以root权限,不需要密码去运行/xxxx/mysqlbaktemp.sh和/xxxx/mysqlimport.sh两个脚本.

<?php
system(“/usr/bin/sudo /xxxx/mysqlbaktemp.sh”,$code);
echo $code;