内容目录
一个PHP小程序,用途是:无需给程序员开放服务器SSH帐号,只需通过Web浏览器即可从SVN版本库更新代码到Linux服务器的指定目录。如果有需要,可以给这段代码加个密码登录。
1、假设www、www是Apache或Nginx服务器的用户名和组, /home/wwwroot/web 是网页文件存放根目录,执行以下shell命令:
- svn checkout svn://ip/project /home/wwwroot/web
- chown –R www:www /home/wwwroot/web
2、创建文件svn_up.php:
- <?php
- header(“Content-type: text/html; charset=utf-8”);
- error_reporting(E_ALL);
- $handle = popen(‘LANG=zh_CN.utf8 svn up –username xx –password xx123 /home/wwwroot/web 2>&1’,‘r’);
- $handle1 = popen(‘chown -R www:www /home/wwwroot/web 2>&1’,‘r’);
- echo “‘$handle’; “ . gettype($handle) . “\n”;echo “<br/>”;
- echo fread($handle, 2096);echo “<br/>”;
- echo fread($handle1, 2096);echo “<br/>”;
- pclose($handle);
- pclose($handle1);
- ?>
附:不要去掉上面的报错设置,这样也是为了方便调试,因为会有很多权限问题,等着你去更改。
如果你的SVN版本是1.6以上(一般都是),然后修改svn的服务器配置:
我的svn的配置目录为/home/www/.subversion/
修改下面的servers文件:
[global]
store-passwords = yes
store-plaintext-passwords = no
否则会出现密码加密等之类的报错提示
其他的问题就是一些权限问题,基本都把其改为www:www的原则,因为是web访问的嘛
chown -R www:www /home/wwwroot/web
3、通过浏览器访问svn_up.php,显示以下内容(例):
U /home/wwwroot/web/images/test.jpg
Updated to revision 81.