PHP 5.6.32 增加pdo_dblib.so拓展

首先说明,php增加pdo_dblib.so拓展不需要重新编译php源文件,只需要增加dblib源包即可。

1.下载安装所需包

1.#下载
wget http://mirrors.ibiblio.org/freetds/stable/freetds-stable.tgz
2.#解压文件 (选择好自己所需要编译的路径)
tar -zxvf freetds-stable.tgz 
3.#进入解压后的目录
cd freetds-0.91/
4.配置编译
./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
make && make install

2.进入php源编译目录进行编译安装pdo_dblib.so

1#进入我的php编译目录
cd /usr/local/src/php-5.6.32/ext/pdo_dblib/
2.#执行phpize生成PECL扩展的configure文件.
/usr/local/php/bin/phpize 
3.安装编译
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-dblib=/usr/local/freetds
make && make install

3.编译成功的话可以在cd /usr/local/php/lib/extensions/里找到 pdo_dblib.so,不成功的话查看下面我备注的一些坑。

[root@vm-no-debug-non-zts-20131226]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
total 3408
-rwxr-xr-x 1 root root 1113008 Apr 10 16:12 opcache.a
-rwxr-xr-x 1 root root  589508 Apr 10 16:12 opcache.so
-rwxr-xr-x 1 root root  109781 Apr 11 14:58 pdo_dblib.so
-rwxr-xr-x 1 root root 1671797 Nov 24 10:00 redis.so
[root@vm-no-debug-non-zts-20131226]# 

4.重启php服务 查看文件是否存在

[root@vm-no-debug-non-zts-20131226]# php -m|grep dblib
pdo_dblib
[root@vm-no-debug-non-zts-20131226]# 

我遇到的错误~

PHP Warning: PHP Startup: redis: Unable to initialize module  

解决办法:

1、删除编译过的源码包freetds-0.91 和 pdo_dblib文件和目录,从新编译生成freetds
2、检测/usr/sbin /use/bin 目录下是否存在php php-config php-cgi phpize 文件,重新在源文件目录下cop过来新的命令。(因为我这之前升级过版本,所以存在版本不一致情况)

然后重新编译即可,还要注意执行phpize时最好写全路径,并且要在php源文件ext目录下pdo_dbib问下才行) 

我遇到的错误~

.PHP Warning: Module 'pdo_dblib' already loaded in Unknown on line 0  

解决办法:

因为看文档很多都写了在php.ini中添加 extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/pdo_dblib.so

加上后就会出现如上错误,显示重复加载,具体报错原因不知道。直接注释掉就好啦。

 

 

原文地址:https://www.cnblogs.com/liuquan/p/8796100.html