php 安装sql server驱动及扩展
muke
每日精进
muke
2023-10-19 14:17:33
1975
{{single.collect_count}}

作者使用的环境:centos7 ,php7.4

1. 加入微软的源

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
2. 安装驱动

yum install msodbcsql mssql-tools unixODBC-devel
 注意以上两个驱动安装成功后,当前是支持php7以上的版本

3. 安装扩展

    此处提供两种安装扩展的方式: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 表示安装成功。

3.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后面
————————————————
版权声明:本文为CSDN博主「gaozhigang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gaozhigang/article/details/128819984

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}