ubuntu php 无法执行exec_小技巧:在PHP中调用多条shell指令

有时候,在持续集成的过程中,需要通过网页在目标服务器上执行shell指令,今天就列举一个实例进行讲解。

比如,我们需要能通过网页将SVN update进行自动化,那么,可以在PHP中编写如下脚本:

e140ccbac0e136a5c67c853e8e5d1654.png

以上代码演示了使用PHP中的exec函数执行多条shell指令的方法。需要注意以下几个要点:

1) 多条指令执行需要使用&&作为间隔,而不是分号;

2) 结尾的2 >&1 表示将标准错误也输出到标准输出,这样,我们可以查看shell执行的结果,不论其执行成功还是失败,这样对于查找错误原因很有帮助。

3) exec的第二个参数表示shell脚本执行的输出内容,第3个参数表示最后一条shell指令执行后的退出代码。一般0表示执行成功,非0表示执行失败。

具体针对上述实例中的svn update来说,还需要注意以下两点:

1) php中的shell指令时在web server的用户权限上执行的,一般对于Windows上的IIS来说,这个用户是I_USER,所以,执行指令之前需要确保I_USER用户对repo目录拥有读写权限。

2) 由于上面1的原因,如果尝试update一个https的仓库,因为I_USER用户无法显示图形界面,所以无法选择保存证书。Work around方式为:使用HTTP方式,并在shell指令中指定svn repo的用户名和密码。但是请注意,这种方法会暴露repo的登录凭证,需要谨慎使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值