PHP 安装 pdo_sqlsrv 扩展(CentOS7)
一、安装相关依赖
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 |
2.3 预编译
$ /usr/bin/phpize |
2.4 编译安装
$ make && make install |
三、添加pdo_sqlsrv扩展
本文是使用yum安装的php、php-fpm,相关配置文件路径可能与各路大神们的环境不太相同(根据自己环境找到相关配置文件)。
- 在
/etc/php.ini配置文件中添加pdo_sqlsrv.so扩展。
extension=pdo.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信息

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DevOps Technology Stack!
评论





