小技巧:在PHP中调用多条shell指令
作者:BlogUpdater |
时间:2017-06-24 |
浏览:5020 |
评论已关闭 条评论
有时候,在持续集成的过程中,需要通过网页在目标服务器上执行shell指令,今天就列举一个实例进行讲解。
比如,我们需要能通过网页将SVN update进行自动化,那么,可以在PHP中编写如下脚本:
<?php
// Run single system command
exec("ipconfig 2>&1", $output, $code);
var_dump($output);
var_dump($code);
// Run multiple shell commands
exec("cd %cd%\svn_repo_child_folder\test && svn update
--username <your-repo-username> --password <your-repo-password> 2>&1", $output, $code);
var_dump($output);
var_dump($code);
以上代码演示了使用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的登录凭证,需要谨慎使用。
如需转载,请注明来自:拓扑梅尔智慧办公平台 | TopomelBox 官方站点
相关推荐
- 使用纤程简化枚举器3:两方面都兼顾
- Posted on 02月25日
- 第 816 期:前微软工程师打造了一个大小只有 2.5 KB 的记事本
- Posted on 07月05日
- 第 584 期:我确实需要吐槽一下 Windows 11 的 OOBE
- Posted on 03月30日
- Visual Studio Code更新:Doxygen风格注释及非阻塞调试
- Posted on 07月21日



评论已关闭。