Maison > développement back-end > tutoriel php > 使用PHP建立SVN的远程钩子,使用exec命令自动更新SVN的代码

使用PHP建立SVN的远程钩子,使用exec命令自动更新SVN的代码

WBOY
Libérer: 2016-06-20 12:46:48
original
875 Les gens l'ont consulté

本操作需要使用到php执行sudo命令的权限,相关设置可以参考:
apache/Nginx下的PHP/Ruby执行sudo权限的系统命令

通过Svn的钩子功能,可以在我们执行SVN操作时,同时自动执行一些操作,比较常见的操作有:
1,本地更新并提交代码时,在测试环境或者线上环境同时将代码更新到最新版
2,在更新Svn时,如果有数据库相关的操作,可以同时将SQL发给远程钩子程序执行相关的SQL

这个实例是我们项目组用到的一个片段,实现在本地开发代码测试通过以后,往线上提交SVN时,自动将代码更新到线上,或者执行导出打包的工作

<?php//先切换到程序部署的目录$path = dirname(__FILE__);exec("cd {$path}"); exec("sudo /usr/bin/svn up", $output);print_r($output);
Copier après la connexion

这里需要将apache加入sudoer组

为此,修改sudo配置文件,直接键如visudo命令编辑配置文件:

1. 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。
否则会出现sudo: sorry, you must have a tty to run sudo

2. 增加行 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified

3. 赋予apache用户执行svn权限
如,增加行:apache ALL=(ALL) NOPASSWD: /usr/bin/svn
注:NOPASSWD可以使在命令执行时不需要交互输入apache用户的密码

最后一步,即在SVN钩子中添加提交SVN时,自动访问远程链接“http://www.4wei.cn/yoursvnfile.php”


source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal