ubuntu下php调用执行shell脚本

由于竞赛的原因,我和同学需要在Linux(Ubuntu)系统下搭建一个Web访问控制器,我负责前端php,同学负责后台shell脚本和控制器的编写。在这个过程中,需要利用php调用并执行shell脚本,查阅了相关资料,终于调通了,总结一下写在这里,方便以后阅读。

首先,推荐几篇博客,很感谢他们的回答解决了我的问题:
http://blog.csdn.net/wuhengwudi/article/details/7454094
http://blog.csdn.net/xundh/article/details/46233817
http://my.oschina.net/junn/blog/142986?fromerr=AiRfZrkp

我遇到的问题是,通过php调用shell脚本没有反应没有输出也没有报错,单纯地无法调用。查阅了资料后发现,应该是配置文档以及用户权限的问题,所以解决如下:

第一,应该查阅php.ini配置文档(我的配置文档位置是/etc/php5/php.ini),关闭安全模式 safe_mode=Off

第二,给予php运行的用户和本机用户权限。php运行的用户名可以通过在localhost运行以下的php文件查到:


    echo shell_exec("id -a");
?>

我的Ubuntu系统的php运行用户名是www-data(好蠢的名字…)
控制台下,执行 visudo,可以打开/etc/sudoers文件进行修改(利用visudo命令的意义在于,sudoers文件很重要,如果修改错了,visudo会提示你,而直接修改会导致系统出错,无法使用sudo…)
ubuntu下php调用执行shell脚本_第1张图片
修改的地方在root的下一行:
‘查到的php运行的用户名’ ALL=(ALL) NOPASSWD:ALL
‘本机用户名’ ALL=(ALL) ALL

通过以上设置,应该就能完成ubuntu系统下php调用并执行shell脚本。
PS.相关的命令(详细请百度google之)

$output = shell_exec("xxx.sh");//只有失败的时候返回NULL
system("cmd string",$status);//$ststus在调用成功时返回true,失败返回false

你可能感兴趣的:(Ubuntu,php,shell,ubuntu,php,shell)