用php给svn添加用户,为PHP增加SVN扩展

这次涉及到一个网上资料很少的问题,PHP的SVN扩展。

windows平台下,最简单的php服务器搭建无疑是xampp。但是当前版本的xampp(1.7.3)并不带有svn的扩展,即php_svn.dll。从版本更新中得知2009.1.23的xampp做了如下的变化:

23. Jan 2009 1.7.0 pl1 beta3

Delete php\ext\php_svn.dll

Delete php\php5.ini

Delete mysql-gui-tools-noinstall-5.0-r15

New build xampp-control.exe

Patching phpMyAdmin\main.php (305-318)

也是在这个版本开始,xampp移除了对svn扩展的支持。

在PECL的网站上仍然可以下载到最新的SVN扩展源码:

当前的版本是0.5.1,发布于2009.9.23,状态仍然是beta。查看其在php.net上的文档:

但是由于文档不全仍然让人一头雾水。起初是想为我的windows下添加以下svn扩展的,但是却看到了这样一句 'A DLL for this PECL extension is currently unavailable' ,又是一盆冷水。跳转链接指向如何在windows下编译PHP。于是我装Visual C++ 2008 Express Edition,装了Windows Platform SDK,捣鼓了一阵,还是没能成功。

随后我又去网上直接下了php_svn.dll文件,把他丢进ext目录里,在php.ini里添加extension = php_svn.dll,重启,还是失败...最终我还是放弃了windows的扩展搭建,把目标转向了Linux。

我一直都很喜欢Ubuntu,这次用的照旧还是Ubuntu。习惯性的,在Ubuntu server-9.04上已经安装了LAMP,所以我先是安装了一个svn,快速建了一个库:

apt-get install subversion

mkdir /var/svn

cd /var/svn

svnadmin create MyCategory

svnserve -d -r /var/svn

subversion的安装不是必须的。似乎现在还没有基于Debian的发布版有这个扩展的二进制包。所以要在ubuntu上使用这个扩展就必须手动安装

然后安装必要的组件:

apt-get install build-essential

apt-get install php-pear php5-dev libsvn-dev

build-essential是必要的编译环境,通常这个都会预先安好。接下去就是三个依赖,php-pear php5-dev libsvn-dev 。如果用下面的命令搜索

apt-cache search pecl

那么结果会是这样的

dh-make-php - Creates Debian source packages for PHP PEAR and PECL extensions

php-auth - PHP PEAR modules for creating an authentication system

php5-radius - PECL radius module for PHP 5

php5-remctl - PECL module for Kerberos-authenticated command execution

php-pear - PEAR - PHP Extension and Application Repository

出现php-pear的原因,是PEAR和PECL共享了相同的包和分发机制。适当PHP开发包也是必要的,比如说php5-dev。

最后,就是Subversion的头文件,即libsvn-dev,被用来在没有安装Subversion的环境中编译svn扩展。

下一步,安装扩展:

sudo pecl install svn

由于当前版本是0.5.1,所以命令变更如下:

sudo pecl install svn-0.5.1

这一步会下载svn扩展的源代码,编译成svn.so文件然后再把它安装到PHP能找到它的地方。但是,编译到一半,问题就来了:

/usr/bin/ld: cannot find -lsasl2

collect2: ld returned 1 exit status

make: *** [svn.la] Error 1

出现这个问题,我一时没能google到什么信息。直到我在google第6页找到了Ubuntu论坛里一位朋友的解决方法:

搜索sasl2而不是lsasl2,然后安装。

apt-cache search sasl2

sudo apt-get install libsasl2-dev libsasl2-modules-ldap

之后继续刚才安装svn-0.5.1的命令,报错的内容变化了:

/usr/bin/ld: cannot find -lneon-gnutls

需要继续搜索和安装缺失的包

apt-cache search neon gnutls

sudo apt-get install libneon27-gnutls-dev

至此,终于通过编译,并在完成的最后提示在php.ini中增加一行:

extension=svn.so

重启Apache

/etc/init.d/apache2 reload

通过查看phpinfo(),可以看到多出了svn一项。

svn supportenabled

svn client version1.5.4

svn extension version0.5.1

写一个脚本测试一下,成功。

svn_checkout('svn://localhost/MyCategory', dirname(__FILE__) . '/MyCategory');

?>

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值