1.安装ssh2扩展 

(1)window

. 下载 php extension ssh2
下载地址 http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
根据自己PHP的版本去下载. 解压完后,会有三个文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。
. 将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。
. 将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份
. php.ini中加入 extension=php_ssh2.dll
. 重启服务器,即可使用php执行ssh连接操作了。
查看phpinfo(),是否有显示php_ssh2扩展加载成功。

(2)linux

在linux下需要先安装扩展所需的依赖库
.安装libssh2
wget http://www.libssh2.org/download/libssh2-1.7..tar.gz
tar zxf libssh2-1.7..tar.gz
cd libssh2-1.7.
./configure --prefix=/usr/local/libssh2
make && make install
.安装ssh2
wget http://pecl.php.net/get/ssh2-0.12.tgz
tar -zxvf ssh2-0.12.tgz
cd ssh2-0.12
phpize
./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2
make
#执行完以上过程后,在当前目录下的modules目录下会生成一个ssh2.so文件,这就是扩展PHP所需要的,将该文件拷贝到PHP库的存储目录下在修改PHP的配置文件即可。
cp modules/ssh2.so /usr/local/php/lib/php/extensions/no-debug-non-zts-/
#注:PHP库的存储目录可能不同
vim /usr/local/php/lib/php.ini
添加extension=ssh2.so
#重启php
php -m |grep ssh #可查看是否安装成功

2.ssh2扩展与svn钩子结合,实现文件文件夹的增删改

(1)创建如下目录

file存放源码(第一次需要co代码,之后再改用up)

key存放密钥

log存放错误信息,文件更新删除记录

svn存放相关操作(https://github.com/getCodeWarehouse/php_ssh2)

(2)在svn hooks中开启钩子,调用php脚本

重要的事说三遍 要改权限~ 要改权限~要改权限~

 

svn up 状态有 U D A,使用array_pop弹出无用数据

更新和新增同为一类,需要判断是文件还是文件夹,选择不同的函数,值得注意的是ssh2_sftp_mkdir,如果远程机存在此文件夹会报错

删除文件夹之所以使用rm命令,因为ssh2_sftp_rmdir不能删除非空文件夹,又不能加参数

(3)测试提交svn

更新文件成功

如果更新速度慢,那就怪网络吧 _(┐「ε:)_

相关代码:https://github.com/getCodeWarehouse/php_ssh2

利用Php ssh2扩展实现svn自动提交到测试服务器的更多相关文章

  1. CentOS 6 用SVN自动提交文件到web服务器

    关于 svn 的安装 参考:[转]Linux(centOS6.5)下SVN的安装.配置及开机启动 经过两天的各种尝试总算解决了,总结如下: 1.在建立库时注意 要让库的名称和  要同步的 web目录名 ...

  2. 如何利用svn自动同步更新到网站服务器

    我们最终的目的是:当本地提交后,SVN服务器自动更新服务器端指定WEB目录内的文件 实现方法: 找到服务器端 SVN版本库所在的目录(目录名称是Repositories),这个目录是在安装Visual ...

  3. svn自动update到指定目录

    对于开发和测试环境来说,可以使用svn自动update 到指定目录,这样就省去每次提交代码都要去服务器上手动update.对于团队来说,省时省力. 看下怎么做吧,在服务器svnserver安装 目录下 ...

  4. 自动提交Git branch代码评审到Review Board系统

    背景 敏捷软件开发中,越小的反馈环,意味着软件质量越容易得到保证. 作为组件团队,我们的开发任务中,往往存在一些特性涉及到几十个功能点,开发周期持续数周或数月的情况.如何在开发过程中保证软件质量,是个 ...

  5. 按Enter键后Form表单自动提交的问题

    怪事年年有,今年特别多. 话说,最近项目中遇到一件怪事,当我鼠标focus在文本框中,轻轻敲了下回车键,尼玛页面突然刷新了,当时把宝宝给吓得. 接下来就是一番苦逼的烧脑和蛋疼~ 一.被表象所迷惑 突然 ...

  6. 使用RBTool自动提交code review请求

    使用RBTool自动提交code review请求 前言 让我们回想一下手工提交review请求的过程: 首先得用 svn diff > filename.diff 生成diff文件. 然后输入 ...

  7. Ajax技术--考试计时并自动提交试卷

    1.概述 在开发网络考试系统时,考试计时并自动提交试卷是必不可少的功能.由于在答卷过程中,试卷不能刷新,所以需要使用Ajax实现无刷新操作.运行本实例,访问准备考试页面index.jsp,在该页面中, ...

  8. svn自动更新服务器最新代码

    1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin    --svn安装目录(作者使用时TortoiseSVN客户端,其 ...

  9. iOS:Xcode中SVN不能提交CocoaPods中的.a文件的解决方法

    不能提交.a文件, 这个与SVN的配置有关, 其实与xcode倒没有关系. 解决方法: 1. 打开终端,  在命令行中输入: vi ~/.subversion/config  来打开配置文件.2. 然 ...

随机推荐

  1. ISAP 模板

    #include <iostream> #include <cstring> #include <cstdio> #include <queue> us ...

  2. C#怎么得到主机名,IP,MAC

    一:基础知识 a: Dns 类 提供简单的域名解析功能. Dns 类是一个静态类,它从 Internet 域名系统 (DNS) 检索关于特定主机的信息. 在 IPHostEntry 类的实例中返回来自 ...

  3. 科研论文提交流程与常见问题(EDAS 系统提交)

    第一步 注册文章(Registering your Paper) 如上图,点击菜单中的submit paper按钮,会列出所有的会议和期刊,选择一个你要投稿的期刊或者会议,例如选择第一个2013 IE ...

  4. [AS/400] Control Language

    下面是一个简单的 CL 例子,转换日期格式:从 Julian 到 MDY,或者反方向转换. 接受两个参数,日期值 IN,目标类型 TYP,将转换后的日期值存入 OUT 中. PGM (&IN ...

  5. 《University Calculus》-chaper8-无穷序列和无穷级数-等比级数

    前言:其实无穷序列和无穷级数和数列{an}以及我们接触微积分就给出的极限概念lim有着紧密的联系,它对于我们在具体的问题当中进行建模和数据分析有着非常重要的作用. 无穷序列: 最简单的一种说法,就是一 ...

  6. BASH_SOURCE 用法

    参考 bash少见的用法 http://blog.csdn.net/wonderisland/article/details/22892759. 原有项目里自带的启动脚本用到了bash_source获 ...

  7. openresty安装lua和nginx相关

    server{ listen ; server_name a.com; index index.php; root /usr/share/nginx/html; location / { if (!- ...

  8. SQL 约束解说

    SQL 约束解说 2009-04-27 09:29 约束主要包含: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT 1.not null : ...

  9. Nginx反向代理,负载均衡配置

    主配置文件:nginx.conf # For more information on configuration, see: # * Official English Documentation: h ...

  10. Lucene全文检索

    Lucene写入和更新操作: if (id.equals("")) { this.goodsService.save(goods); String goods_lucene_pat ...