一、安装相关依赖
1.1 安装微软源
$ curl -s -o /tmp/prod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
1.2 防止冲突先卸载原有版本(可选)
$ yum remove -y unixODBC
1.3 安装驱动(三个都要装上,缺一不可)
$ yum install -y msodbcsql mssql-tools unixODBC-devel
二、编译pdo_sqlsrv插件
2.1 下载pdo_sqlsrv扩展包
$ wget http://pecl.php.net/get/pdo_sqlsrv-5.9.0.tgz
2.2 解压编译
$ tar xf pdo_sqlsrv-5.9.0.tgz
$ cd pdo_sqlsrv-5.9.0
2.3 预编译
$ /usr/bin/phpize
$ ./configure --with-php-config=/usr/bin/php-config
2.4 编译安装
$ make && make install
三、添加pdo_sqlsrv扩展
本文是使用yum安装的php、php-fpm,相关配置文件路径可能与各路大神们的环境不太相同(根据自己环境找到相关配置文件)。
- 在
/etc/php.ini
配置文件中添加pdo_sqlsrv.so
扩展。
extension=pdo.so
extension=pdo_sqlsrv.so
pdo_sqlsrv.so
是sqlserver扩展,需要在pdo.so
扩展之前加载,否则会出现如下报错PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_sqlsrv.so' - /usr/lib64/php/modules/pdo_sqlsrv.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
- 重启php-fpm服务
$ systemctl restart php-fpm
四、验证扩展是否正确安装
- 验证扩展是否成功安装
$ php -m | grep pdo_sqlsrv
这里可以看到 pdo_sqlsrv
扩展已经添加到php中了。
但是又出现了PHP Warning: Module 'PDO' already loaded in Unknown on line 0
的Warning信息。
经过排查,发现在 /etc/php.d/pdo.ini
配置文件中也引用了 pdo.so
扩展:
把 /etc/php.d/pdo.ini
中引用的 pdo.so
扩展注释,只保留 /etc/php.ini
中的此扩展即可。
注释后重启php-fpm,重新查看php扩展,此时Warning信息就没出现了。
- 在Web端查看PHP信息
至此,pdo_sqlsrv 插件已经成功安装。