作者使用的环境:centos7 ,php7.4
加入微软的源
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
安装驱动
yum install msodbcsql mssql-tools unixODBC-devel
注意以上两个驱动安装成功后,当前是支持php7以上的版本
安装扩展
此处提供两种安装扩展的方式:pecl 和原包编译
3.1 pecl
sudo pecl install pdo_sqlsrv
如果使用第一种方式,可以跳过3.2原包编译部分,直接阅读3.3
sudo pecl install sqlsrv
3.2 原包编译
3.2.1 下载pdo_sqlsrv扩展包
wget http://pecl.php.net/get/pdo_sqlsrv-5.8.0.tgz
这里下载的sqlsrv版本为5.8.0,如需其他版本自行前往查看:http://pecl.php.net/package/pdo_sqlsrv
3.2.2 【解压并进入目录】这里两个步骤:1. 进行解压扩展包 2.并进入扩展包目录
tar -zxvf pdo_sqlsrv-5.8.0.tgz
cd pdo_sqlsrv-5.8.0
3.2.3 【执行命令安装】
1. phpize
2. ./configure --with-php-config=/usr/bin/php-config
3. make && make install
phpize和php-config 路径,根据自己的环境替换实际路径。
根据提示,将编译完成的so文件拷贝到指定路径。
3.3 加入扩展引用
echo "extension = pdo_sqlsrv.so" >>/etc/php.ini
到这里安装的流程就搞定啦,然后重启PHP,检查扩展是否安装成功
php -m|grep -i sqlsrvc
出现 pdo_sqlsrv 表示安装成功。
4 遇到的问题
作者在安装过程,遇到以下问题:
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlsrv.so' (tried:/usr/lib64/php/modules/pdo_sqlsrv.so (/usr/lib64/php/modules/pdo_sqlsrv.so: cannot open shared object file:No such file or directory), /usr/lib64/php/modules/pdo_sqlsrv.so.so (/usr/lib64/php/modules/pdo_sqlsrv.so.so:undefined symbol: php_pdo_register_driver)) in Unknown on line 0
解决方案:
extension=pdo.so
extension=pdo_sqlsrv.so //放到pdo后面。
在查找问题的过程中,有些文章提到swool扩展也有类似的问题,解决方案如下(未验证,有时间的小伙伴可以验证一下):
extension=sockets.so
extension=swoole.so //放到pdo后面
来源地址:https://blog.csdn.net/gaozhigang/article/details/128819984