要在ubuntu的php上连接远程windows上的sqlserver数据库,
php版本7.0不行,需要升级。
1.安装php7.3
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php7.3
看phpinfo里面,有没有pdo, 如果没有,
就安装 (下面的命令不一定正确)
apt-get install php7.3-gd
apt-get install php7.3-xml
apt-get install php7.3-curl
等
2. Ubuntu16.04中php如何切换版本
sudo update-alternatives --config php
停用 php7.0: sudo a2dismod php7.0
选择 php7.3 : sudo a2enmod php7.3
3.重启 apache
sudo service apache2 restart
4.安装sqlserver驱动
curl -s https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo bash -c "curl -s https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list"
sudo apt-get update
如果遇到这样的错误。没有错误的可以跳过
(这里是时间过期了)执行命令 date -s 12/14/2018 && date -s 20:19:00 && sudo hwclock --systohc 注意改成当前时间即可
sudo ACCEPT_EULA=Y apt-get -y install msodbcsql17 mssql-tools
sudo apt-get -y install unixodbc-dev
sudo apt-get -y install gcc g++ make autoconf libc-dev pkg-config
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
(pecl command not found )
(如果pecl执行不成功先执行以下2条命令)
(sudo apt-get install php-pear php-dev)
(/etc/php/conf.d 代表的是你本机的php安装路径)
sudo bash -c "echo extension=sqlsrv.so > /etc/php/conf.d/sqlsrv.ini" sudo bash -c "echo extension=pdo_sqlsrv.so > /etc/php/conf.d/pdo_sqlsrv.ini" sudo service php-fpm restart
首先安装sqlsrv
然后,同样的,安装pdo_sqlsrv
这样sqlserver的驱动就装好了
在php.ini里面加上
重启apache,看phpinfo里面有sqlsrv了:
但是,光有sqlsrv是不够的,还要有pdo_sqlsrv,而phpinfo里面并没有
到底是哪里的问题?
我看到有个10-pdo.ini的文件,不知道是不是这里的问题
打开10-pdo.ini,这里面只有一个pdo.so,我加了一个pdo_sqlsrv.so:
保存,service apache2 restart
ok了,pdo_sqlsrv出来了:
测试打印thinkphp3.2的M()对象:
测试查询数据:
5.sqlserver的配置
远程sqlserver默认使用的是1433端口,服务器是不开放的,要另外开放一个端口,防火墙也要开放这个端口
https://blog.csdn.net/wuzuyu365/article/details/100597699