[文章作者:张宴 本文版本:v1.0 最后修改:2008.10.06 转载请注明原文链接:http://blog.zyan.cc/read.php/371.htm]
今天花几分钟写的一个PHP小程序,用途是:无需给程序员开放服务器SSH帐号,只需通过Web浏览器即可从SVN版本库更新代码到Linux服务器的指定目录。如果有需要,可以给这段代码加个密码登录。
1、假设www、www是Apache或Nginx服务器的用户名和组,/data0/www/是网页文件存放根目录,执行以下shell命令:
2、创建文件svn_up.php:
3、通过浏览器访问svn_up.php,显示以下内容(例):
U /data0/www/app/DataTransferService.php
Updated to revision 561.
今天花几分钟写的一个PHP小程序,用途是:无需给程序员开放服务器SSH帐号,只需通过Web浏览器即可从SVN版本库更新代码到Linux服务器的指定目录。如果有需要,可以给这段代码加个密码登录。
1、假设www、www是Apache或Nginx服务器的用户名和组,/data0/www/是网页文件存放根目录,执行以下shell命令:
sudo -s
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /data0/www/
chown -R www:www /data0/www/
su www
cd /data0/www/
/usr/local/bin/svn checkout --username zhangyan --password 123456 http://xxx.xxx.xxx.xxx:8080/svn/web/trunk/
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /data0/www/
chown -R www:www /data0/www/
su www
cd /data0/www/
/usr/local/bin/svn checkout --username zhangyan --password 123456 http://xxx.xxx.xxx.xxx:8080/svn/web/trunk/
2、创建文件svn_up.php:
3、通过浏览器访问svn_up.php,显示以下内容(例):
U /data0/www/app/DataTransferService.php
Updated to revision 561.
$handle = popen(\'/usr/local/bin/svn up --username zhangyan --password 123456 /data0/www/*\', \'r\');
后面的那个 * 没有必要加上吧?
有你blog在firefox下alert提示是乱码的
post-commit 监视指定目录,然后 up 就可以了
<?php
$handle = popen('/usr/bin/svn update --username *** --password *** /data/nginx/htdocs/','r');
$read = stream_get_contents($handle);
echo "<pre>";
printf ($read);
echo "</pre>";
//pclose($handle);
?>
你有没先做/usr/local/bin/svn checkout --username zhangyan --password 123456 http://xxx.xxx.xxx.xxx:8080/svn/web/trunk/
这一步,作了这一步后,往后你调update命令,svn会知道去那个源取代码来更新!
我为什么在网页里不输出任何信息
遇到错误中断了,没执行到现实内容的那行代码
看看错误日志,肯定报错了