您的位置:首页 > 编程语言 > PHP开发

通过php来执行svn的update操作

2014-05-28 00:00 351 查看
摘要: php执行svn

用PHP完成SVN的update操作

直接上代码:

error_reporting(E_ALL);
$handle = popen('.UTF-8 svn update  --username dev-tester --password tester123 --config-dir /home/wwwroot/.subversion  /home/wwwroot/yiidemo/ 2>&1','r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);

遇到的问题:

1./dev/null/.subversion/servers Not a directory

svn: Can't open file '/dev/null/.subversion/servers': Not a directory

因为通过php执行,肯定是nginx或者apache的www用户组 ,查看etc/passwd,修改www用户的家目录和shell为自己的svn的配置目录subversion/servers,例如

www:x:1000:1000:/home/wwwrooot:/bin/bash

修改services文件

注:services文件是svn用户组的配置文件,不是svn仓库里面的services文件,

#目录位置一般在:/home/wwwroot/.subversion/services
[global]
store-passwords = yes
store-plaintext-passwords = no

还要必须在popen()方法带这个参数:

--config-dir /home/wwwroot/.subversion

2.Can’t open file ‘.svn/lock’: Permission denied

这个问题原因是因为第一次checkout的时候是用root,使得其他用户没有权限

两个解决办法:

一.把.svn的属主、组修改给用户,(su www , svn co svn://127.0.0.1/svnadmin/yiidemo --username dev-lin --password yiidemo123)

二.给目录加权限,www权限

3.在shell命令 su切换www用户出现This account is currently not available

这个是因为 www用户shell权限问题,查看命令:

cat /etc/passwd | grep www

修改:'/sbin/nologin',为'/bin/bash'

4.编码问题:update Error converting entry in directory ... to UTF-8

解决办法:在popen()方法添加参数:

LANG=en_US.UTF-8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: