最近在做一个小程序,连接物联网硬件的,需要用到sqlserver数据库,数据库在windows下是比较常见的,在linux下,这个2008r2版本的,微软爸爸没有给驱动,导致php代码在连接的时候一直报错
接下来总结下遇到的坑
网传有几种方法,一种是使用pdo-mssql连接,这种我测试了,好像对于php版本有规定,我们用的php7.2好像并没有用
另外一种是pdo_sqlsrv(微软爸爸提供的)
我来讲下步骤
Xshell命令连接服务器,根目录操作
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
3.下载pdo_sqlsrv的扩展包
wget http://pecl.php.net/get/pdo_sqlsrv-5.3.0.tgz
5.直接解压pdo_sqlsrv扩展包
tar -zxvf pdo_sqlsrv-5.3.0.tgz
6、进入解压目录
cd pdo_sqlsrv-5.3.0
7、执行命令(每个人的路径不一样)
/www/server/php/72/bin/phpize
8、执行命令(每个人的php的路径不一样)
./configure --with-php-config=/www/server/php/72/bin/php-config
9.编译安装下就可以了
make && make install
10、更新php.ini
修改/usr/local/php/etc/php.ini 查找:extension = 再最后一个extension= 后面添加上extension = "pdo_sqlsrv.so"保存
11、重启php服务
代码连接,之后就应该好了
注意事项
1.一定要是php7.2版本,测试了5.5和7.3.3不行
2.Centos7.0+ 64位
连接了两天,遇到各种错,不明白的或者报错的截图直接留言会看的,
按照你给的步骤安装成功了,测试就出现这个情况,这是什么原因
我这个pdo_sqlsrv安装成功了,phpinfo也显示了,但是现在的问题是用linux连接提示odbc问题,网上找了半天也没有php7下odbc的安装教程,有的,按照他的流程下来编译的时候也是报错,
最开始是 ,function_entry的问题,找帖子修改成zend_function_entry后提示新的报错 ZVAL_STRING这个问题