Home  >  Article  >  php教程  >  利用Php ssh2扩展实现svn自动提交到测试服,ssh2svn

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

WBOY
WBOYOriginal
2016-06-13 08:42:10906browse

利用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

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn