1. 程式人生 > >提效技巧 | PHP程式執行Linux下的SVN命令

提效技巧 | PHP程式執行Linux下的SVN命令

在專案開發中,因為是內網伺服器(本文操作操作環境:Centos 6.5+PHP 7),每次更新都需要連上VPN才能svn up更新程式碼。周而復始的操作浪費了大量的開發時間,故決定用PHP實現通過訪問url的方式來更新服務端的程式碼版本。

網上也看到了很多寫法,參考了很多資料,故決定寫一篇部落格備忘,希望對廣大的PHP開發者有所幫助。

第1步:將下列指令碼複製到你的站點目錄下,命名為:svnup.php

<?php
error_reporting(E_ALL);
$handle = popen('svn up --username SVN使用者名稱 --password SVN密碼 /var/www/html/cmisPHP/ 2>&1'
,'r'); echo "'$handle'; " . gettype($handle) . "\n"; $read = fread($handle, 2096); echo $read; pclose($handle);
  • 不要去掉上面的報錯設定,這樣也是為了方便除錯,因為會有很多許可權問題,等著你去更改。

第2步:設定站點使用者組和使用者主

  • 寫一個指令碼,這個指令碼的使用者組和使用者主必須都是nginx或者apache的使用者組和使用者主。
  • 例如我們在服務端執行php相關的操作都是在apache:apache下進行的,請執行命令chown apache:apache -R /var/www/html
    (這是你的網站根目錄,就是程式碼要更新的資料夾)

這裡寫圖片描述

到這裡你的配置還沒有結束,但是會發現出現報錯資訊,不要擔心,這說明你成功一半了。

這裡寫圖片描述

如果你的SVN版本是1.6以上(一般都是),接著修改svn的伺服器配置:
我的svn的配置目錄為/home/www/.subversion/
修改下面的servers檔案:

[global]
store-passwords = yes
store-plaintext-passwords = no

### 不知道SVN配置檔案在哪裡?
如果不知道svn servers配置檔案在哪裡,可以通過查詢的辦法進行,執行命令locate .subversion/servers

,接著拷貝到/var/www/.subversion/下,再進行修改上述第3步的配置。
這裡寫圖片描述

這裡寫圖片描述
到這裡你的PHP程式成功執行Linux下的SVN命令,更新程式碼成功。
SVN的其他命令,請自行嘗試。

參考資料:

聯絡作者

如果你覺得不錯的話,不妨打賞一下,這樣我就有更大的動力去完善它,優化它。