php调用ubuntu shell脚本,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…)

1d7aec03e382b695b695f63edd751b8c.png

修改的地方在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值