原标题:小技巧:在PHP中调用多条shell指令

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

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

以上代码演示了使用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的登录凭证,需要谨慎使用。返回搜狐,查看更多

责任编辑:

php exec执行多条命令,小技巧:在PHP中调用多条shell指令相关推荐

  1. 100条Vista命令行技巧Tips,您知道几条?

    原文:[url]http://gnaw0725.blogbus.com/logs/5011924.html[/url] 100条Vista命令行技巧Tips,您知道几条? 自从去年装上Vista,也有 ...

  2. docker exec执行多个命令详解

    2019独角兽企业重金招聘Python工程师标准>>> docker exec执行多个命令详解 2018年04月23日 22:46:24 阅读数:6928 标签: dockercon ...

  3. 解决java使用Runtime.exec执行linux复杂命令不成功问题

    解决java使用Runtime.exec执行linux复杂命令不成功问题 参考文章: (1)解决java使用Runtime.exec执行linux复杂命令不成功问题 (2)https://www.cn ...

  4. 程序员求职高峰期,这12条工作小技巧必看

    过完春节,该拿的奖金都拿了,又到了一年一度的离职高峰期,新老手程序员纷纷走上了求职之路. 今天给所有程序员提12条工作小技巧,让你在新工作上越做越顺. 1.写文档的能力非常重要 像Spring,hib ...

  5. VB小技巧:字符变量中双引号的输入

    '如要输入表示    "aa" '理论表达方式如: a=""aa""  '但会出错 'ASC码可能达到效果 kk=chr(34)   &am ...

  6. VB.net小技巧——VB.net中SHELL函数以及SendKeys函数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VB.net小技巧--VB.net中SHELL函数以及SendKeys函数 前言 shell 使用 前言 一直在研究怎么用VB.net ...

  7. 工作小技巧—在word中使用邮件批量插入excel中的数据

    工作小技巧-在word中使用邮件批量插入excel中的数据 word中使用邮件批量插入excel中的数据 1.选择数据源 2.插入数据 3.完成合并 word中使用邮件批量插入excel中的数据 1. ...

  8. linux exec 脚本之家,详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

  9. linux 常用命令 小技巧

    转载来自:http://www.cnxct.com/linux-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4-%E5%B0%8F%E6%8A%80%E5%B7%A7/ 1 ...

最新文章

  1. SMOTE处理样本不平衡问题
  2. ARToolKit从图片生成特征点数据
  3. 程序员至少一半时间用于测试
  4. atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模
  5. 判断单链表中的元素是否递增_判断某单链表l总的元素是否是递增的算法
  6. java安全体系:JCA、JCE、JSSE、JAAS
  7. 【优化求解】基于头脑风暴优化算法BSO求解最优目标matlab源码
  8. 咖说 | 关于当前环境下的经济分析
  9. Ad Mucher最新有效注册,升级方式
  10. 评价指标(一)精确率,召回率,F1-score
  11. WeLink互动直播:维护网课秩序,杜绝外人乱入
  12. 哈工大软件学院编译原理实验3——语义分析
  13. 大数据风控必看,挖掘学历数据中暗藏的还款意愿及还款能力
  14. 交通行业服务器操作系统加固报价,加固清单报价实例
  15. 万变不离其宗之ZYNQ启动介绍
  16. IDEA两种方式设置类注释模板
  17. 小巧易用的分区工具——MiniTool Partition Wizard
  18. 上班族妈妈的教子宝典:教你做事业成功的好妈妈
  19. Java文本文档地址地址怎么找_java 中如何在一个文本文档里取出邮件地址
  20. 助力企业高效率办公,华为云桌面必不可少

热门文章

  1. 张小龙Linux微信,微信至今没有黑暗模式,原来是张小龙“全责”?
  2. c语言1A,C程序设计语言1a.ppt
  3. 国庆活动延长三天!快来领取你的数据技术嘉年华门票!
  4. 【每日一练 085】性能优化-实例优化(四)
  5. 嘉年华专访 | 国际上智能运维研究
  6. 遇见未来 | 对话王璞:谈分布式系统在企业落地的挑战
  7. 带你认识三种kafka消息发送模式
  8. 云小课|细数那些VMware虚拟机的恢复招式
  9. 揭开KPI异常检测顶级AI模型面纱
  10. 重磅解读:K8s Cluster Autoscaler模块及对应华为云插件Deep Dive