首页  >  文章  >  php教程  >  利用Php ssh2扩展实现svn自动提交到测试服,ssh2svn

利用Php ssh2扩展实现svn自动提交到测试服,ssh2svn

WBOY
WBOY原创
2016-06-13 08:42:10861浏览

利用Php ssh2扩展实现svn自动提交到测试服,ssh2svn

1.安装ssh2扩展 

(1)window

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

 

(2)linux

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

 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn