Chinaunix首页 | 论坛 | 博客
  • 博客访问: 123016
  • 博文数量: 16
  • 博客积分: 561
  • 博客等级: 中士
  • 技术积分: 181
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 22:54
文章分类

全部博文(16)

文章存档

2011年(3)

2010年(1)

2009年(12)

我的朋友

分类:

2009-02-27 16:26:05

版本历史:

v.1.0, nanlovor, 2009/02/27, 创建

文档概要说明:

本文档主要说明了在linux下使用 php adodb sql server 进行访问时的配置说明。

相关文档:

1. 概述

       linux下的php sqlserver存储过程的访问,有个比较严重的bug,就是如果想要同时获得 返回值和结果集时, linuxphp提供的mssql扩展是有问题的。这影响了我们很多对原来神经系统功能向linux web 平台上的移植,也就是无法重用许多茂哥的存储过程。现在找到了一条途径,利用adodb 的接口,我自己封装了一套较为简单的接口, 可以在 linux 下对sqlserver存储过程 访问, 多返回值+多结果集情况均适用,能够正确返回。

2. freetds的安装

       如果php要采用底层freetds访问sqlServer中多返回集和多返回值的存储过程,那么需要安装 freetds0.82版本(原来我们采用的是freetds0.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.cphp_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/liblibnpc.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/

 

阅读(2450) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:【转帖】PHP字符集编码问题

给主人留下些什么吧!~~

chinaunix网友2009-02-27 16:35:10

顶!加油喔,我看好你:)