免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2909 | 回复: 0
打印 上一主题 下一主题

【原创】Linux下php使用adodb对sql Server访问配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-27 16:26 |只看该作者 |倒序浏览

版本历史:
v.1.0, nanlovor, 2009/02/27, 创建
文档概要说明:
本文档主要说明了在linux下使用 php库 adodb 对sql server 进行访问时的配置说明。
相关文档:
1. 概述
       linux下的php 对sqlserver存储过程的访问,有个比较严重的bug,就是如果想要同时获得 返回值和结果集时, linux下php提供的mssql扩展是有问题的。这影响了我们很多对原来神经系统功能向linux web 平台上的移植,也就是无法重用许多茂哥的存储过程。现在找到了一条途径,利用adodb 的接口,我自己封装了一套较为简单的接口, 可以在 linux 下对sqlserver存储过程 访问, 多返回值+多结果集情况均适用,能够正确返回。
2. freetds的安装
       如果php要采用底层freetds访问sqlServer中多返回集和多返回值的存储过程,那么需要安装 freetds的0.82版本(原来我们采用的是freetds的0.64版本,在php调用sqlServer的多返回值+多返回集情况下是有问题的)

1、删除原来版本
如果已经安装有原来的 freetds-0.64,最好删除原有的版本
#cd freetds-0.64
#make uninstall
如果没有 原有的freetds-0.64的安装目录已经找不到了, 则直接

#mv /usr/local/freetds /usr/local/freetds-0.64 (假设原来freetds 安装在/usr/local/freetds 下)
2、安装新版本
# tar xvfz freetds-stable.tgz
# cd freetds-0.82
# ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
# make
# make install

(注意,以下操作很重要,否则,php会检测不到freetds的目录):由于PHP检测其安装目录的时候有些问题;因此,需要检查/user/local/freetds/lib/libtds.a 和 /usr/local/freetds/include/tds.h 两个文件是否存在,如果不存在,则
#touch /usr/local/freetds/lib/libtds.a
#touch /usr/local/freetds/include/tds.h
创建两个空文件。

3、配置freetds.conf
#vim /usr/local/freetds/etc/freetds.conf

增加
[serviceName] # 服务名
        host = **.**.**.**  #(数据库主机地址)
        port = 1433
        tds version = 8.0
        client charset = GBK

4、如果原来的系统已经有了银联接口,那么就不需要重新编译php了,直接重新启动Apache 即可;
#service httpd restart

3.重新编译php,添加银联接口
1、  准备好银联给予的一个程序包 php.rar

银联接口使用环境:在linux环境下(内核版本号:2.6.20-1.2320.fc5smp),Apache2(版本号为:2.2.2), PHP5(版本号为:5.2.5)下尝试使用PHP页面调用成功。
我们提供如下文件:

2、在PHP的安装包解开的目录下(本例子为:php-5.2.5):
进入ext的目录,将chinapay.def复制到这个目录下,使用ext_skel来生成自动扩展的框架。
命令方式为:
#./ext_skel --extname=chinapay --proto=chinapay.def

3 修改ext/chinapay/目录下的config.m4文件,将如下内容的前面"dnl"删除,保存文件:
   dnl PHP_ARG_ENABLE(chinapay, whether to enable chinapay support,
   dnl Make sure that the comment is aligned:
   dnl [  --enable-chinapay           Enable chinapay support])

4 修改ext/chinapay/目录下的chinpay.c和php_chinapay.h文件。文件内容见样例。对于chinapay.php文件可以用来测试是否能够正常调用签名方法(在编译完成后可以使用:/usr/local/php-5.2.5/sapi/cli/php -f chinapay.php 来运行该PHP文件,验证是否成功)。

5 退到ext的上一层目录

6 使用./buildconf --force

7 使用命令:
#./configure --with-apxs2=/usr/sbin/apxs --with-mysql --with-zlib-dir --with-bz2 --with-libxml-dir --with-gd --with-ttf --enable-mbstring --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-oci8=/opt/oracle --without-sqlite --with-mssql=/usr/local/freetds --enable-chinapay --enable-soap

8 修改Makefile文件,找到EXTRA_LIBS,在最后加入 -L/usr/local/lib -lnpc
/usr/local/lib为libnpc.so所在的目录。

9 使用make

10 使用make install.
  注意:make的时候如果仍然找不到libnpc.so的话,可以采取下面措施:进入到/etc/ld.so.conf.d下,写入一个名为chinapay.conf的文件,内容为/usr/local/lib。表示so的搜索路径。然后运行命令:ldconfig

4.adodb的安装和配置
将svn目录中的 include/db/adodb 整个目录放到php中配置的头文件目录下 例如
/var/www/html/include/db/
# cp -R adodb  /var/www/html/include/db/
将 GenericAdoMssqlDB 放到 /var/www/html/include/db/ 中,该文件为对adodb接口的封装
# cp GenericAdoMssqlDB  /var/www/html/include/db/



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88420/showart_1845212.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP