利用Php ssh2擴展實現svn自動提交到測試服務器

1.安裝ssh2擴展 

(1)windowphp

1. 下載 php extension ssh2
下載地址 http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
根據本身PHP的版本去下載2. 解壓完後,會有三個文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。
3. 將 php_ssh.dll、php_ssh2.pdb 放到你的 php 擴展目錄下 php/ext/ 下。
4. 將libssh2.dll 複製到 c:/windows/system32 和 c:/windows/syswow64 各一份
5. php.ini中加入 extension=php_ssh2.dll
6. 重啓服務器,便可使用php執行ssh鏈接操做了。
查看phpinfo(),是否有顯示php_ssh2擴展加載成功。

 

(2)linuxlinux

在linux下須要先安裝擴展所需的依賴庫
1.安裝libssh2
wget http://www.libssh2.org/download/libssh2-1.7.0.tar.gz
tar zxf libssh2-1.7.0.tar.gz
cd libssh2-1.7.0
./configure --prefix=/usr/local/libssh2
make && make install
2.安裝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-20131226/
#注:PHP庫的存儲目錄可能不一樣
vim /usr/local/php/lib/php.ini
添加extension=ssh2.so
#重啓php
php -m |grep ssh #可查看是否安裝成功

2.ssh2擴展與svn鉤子結合,實現文件文件夾的增刪改

(1)建立以下目錄git

file存放源碼(第一次須要co代碼,以後再改用up)github

key存放密鑰vim

log存放錯誤信息,文件更新刪除記錄windows

svn存放相關操做(https://github.com/getCodeWarehouse/php_ssh2)服務器

(2)在svn hooks中開啓鉤子,調用php腳本網絡

 

 

 

重要的事說三遍 要改權限~ 要改權限~要改權限~ssh

 

svn up 狀態有 U D A,使用array_pop彈出無用數據svn

更新和新增同爲一類,須要判斷是文件仍是文件夾,選擇不一樣的函數,值得注意的是ssh2_sftp_mkdir,若是遠程機存在此文件夾會報錯

刪除文件夾之因此使用rm命令,由於ssh2_sftp_rmdir不能刪除非空文件夾,又不能加參數

(3)測試提交svn

 

更新文件成功

 

若是更新速度慢,那就怪網絡吧 _(┐「ε:)_

相關代碼:https://github.com/getCodeWarehouse/php_ssh2
相關文章
相關標籤/搜索