Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Linux下PHP使用sqlSrv连接微软数据库的方法

Linux下PHP使用sqlSrv连接微软数据库的方法

小云云
小云云asal
2018-03-03 13:53:434994semak imbas

PHP使用sqlSrv连接微软的SQLSERVER数据库时需要使用到扩展 pdo_srv。
pdo_srv 扩展安装可以直接使用 pecl 安装

写本文时的环境是  
 ubuntu 16.04 LTS  
 php 7.0.27  
 unixODBC 2.3.5  
 FreeTDS 1.00.82 
 2018-03-02日

pecl
 程序在PHP安装目录下的bin目录中,如果你的PHP目录不在Linux的环境变量中。或者你的pecl程序没有链接到系统bin路径下,会提示你pecl程序未安装。

安装sqlsrv 需要unixODBC的支持,所以在安装之前如果你没有安装过unixODBC还需要先安装unixODBC,而unixODBC需要FreeTDS来连接SQLSERVER,因为unixODBC只是定义了一套通用接口,并没有具体的实现方法,

一、安装FreeTDS
a)、下载

http://www.freetds.org/

b)、编译安装

./configure --with-tdsver=auto --prefix=/usr/local/freetds --enable-msdblib --with-gnu-ld --enable-shared --enable-static --with-unixodbc=/usr/localmake
make install

网上有些教程里面写着–with-tdsver=8.0 ,我在编译的时候报错,具体支持的值可以看 ./configure –help 中with-tdsver的描述

安装完成后会在 /usr/local/freetds中生成一个etc目录,我们需要用到 freetds.conf文件。
c)、配置
配置freetds.conf文件。可以不用配置

不配置freetds.conf的方法可以见unixODBC的配置环节

[global]#全局配置tds version = auto#更多的配置可以参考freetds官方文档,我这里这样配置已经够用了[servertag]#定义一个叫 servertag 的节点,这个节点的名称可以自定义的,不是固定#所有 # 符号的内容都可以不写在配置文件中,这里只是注释解释用#更多的细节配置看官方描述#数据库的连接IP地址host = 192.168.9.12 #数据库的端口port = 1433 #连接时默认打开的库名,【可以不配置此项】database = master 
#tds version 有全局配置,这里也可以不写tds version = auto

二、安装unixODBC

a)、下载

  https://sourceforge.net/projects/unixodbc/files/unixODBC/
  http://www.unixodbc.org/
  以上两个网站都可以下载到,建议到第二个官网下载吧。

b)、编译安装

./configure --prefix=/usr/local/unixODBC --includedir=/usr/include  --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etcmake 
make install

c)、配置
   在 /etc/odbc.ini 中添加配置

网上有教程说编译安装的是在/usr/local/etc/odbc.ini
 ,虽然编译后有生成此文件,但配置在这个文件里面并不生效。还是要在/etc/odbc.ini中配置

[ODBC Data Sources]#描述而已,没有测过不写行不行,理论上可行SQLSERVER2018912 = 9.12 DB

[SQLSERVER2018912]#Driver 指向的目录是FreeTDS编译生成的文件,类似一个驱动文件,稍后讲解安装方法Driver = /usr/local/freetds/lib/libtdsodbc.so
Description  = 9.12 DB,文字描述
Trace = No#Server 可以直接写 FreeTDS的freetds.conf 中配置的servertag节点名#使用freetds.conf配置时,port 也不用配置了。#因为在此直接写server IP时能配置的选项很少,而freetds.conf可以配置的细节更多#此处我已经配置了IP,freetds.conf中其实就可以不用配置。只要安装好freetds即可Server = 192.168.9.12Port = 1433#7.4或auto应该都可以。没有详细研究过TDS_Version = 7.4[Default]#全局默认配置。理论上可以不写#同上,默认使用Driver = /usr/local/freetds/lib/libtdsodbc.so

以上配置完成后就可以测试了。
使用 unixODBC编译时生成的 isql 程序来测试。路径在 /usr/bin/isql

/usr/bin/isql SQLSERVER2018912 数据库账号 密码

isql 的使用可以使用 isql –help 查看
配置如果没有错误,即可以看到连接到数据库了。就能使用sql语句查询东西了。
unixODBC配置完成后,就可以安装PHP扩展了

三、安装PHP的sqlsrv 扩展

pecl install sqlsrv

安装完后需要去php.ini中加载扩展,然后重启apache才能生效。  
 注意看说编译完后的屏幕打印的内容

写本文时的环境是  
 ubuntu 16.04 LTS  
 php 7.0.27  
 unixODBC 2.3.5  
 FreeTDS 1.00.82
 2018-03-02日

PHP使用sqlSrv连接微软的SQLSERVER数据库时需要使用到扩展 pdo_srv。
pdo_srv 扩展安装可以直接使用 pecl 安装

pecl
 程序在PHP安装目录下的bin目录中,如果你的PHP目录不在Linux的环境变量中。或者你的pecl程序没有链接到系统bin路径下,会提示你pecl程序未安装。

安装sqlsrv 需要unixODBC的支持,所以在安装之前如果你没有安装过unixODBC还需要先安装unixODBC,而unixODBC需要FreeTDS来连接SQLSERVER,因为unixODBC只是定义了一套通用接口,并没有具体的实现方法,

一、安装FreeTDS
a)、下载

http://www.freetds.org/

b)、编译安装

./configure --with-tdsver=auto --prefix=/usr/local/freetds --enable-msdblib --with-gnu-ld --enable-shared --enable-static --with-unixodbc=/usr/localmake
make install

网上有些教程里面写着–with-tdsver=8.0 ,我在编译的时候报错,具体支持的值可以看 ./configure –help 中with-tdsver的描述

安装完成后会在 /usr/local/freetds中生成一个etc目录,我们需要用到 freetds.conf文件。
c)、配置
配置freetds.conf文件。可以不用配置

不配置freetds.conf的方法可以见unixODBC的配置环节

[global]#全局配置tds version = auto#更多的配置可以参考freetds官方文档,我这里这样配置已经够用了[servertag]#定义一个叫 servertag 的节点,这个节点的名称可以自定义的,不是固定#所有 # 符号的内容都可以不写在配置文件中,这里只是注释解释用#更多的细节配置看官方描述#数据库的连接IP地址host = 192.168.9.12 #数据库的端口port = 1433 #连接时默认打开的库名,【可以不配置此项】database = master 
#tds version 有全局配置,这里也可以不写tds version = auto

二、安装unixODBC

a)、下载

  https://sourceforge.net/projects/unixodbc/files/unixODBC/
  http://www.unixodbc.org/
  以上两个网站都可以下载到,建议到第二个官网下载吧。

b)、编译安装

./configure --prefix=/usr/local/unixODBC --includedir=/usr/include  --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etcmake 
make install

c)、配置
   在 /etc/odbc.ini 中添加配置

网上有教程说编译安装的是在/usr/local/etc/odbc.ini
 ,虽然编译后有生成此文件,但配置在这个文件里面并不生效。还是要在/etc/odbc.ini中配置

[ODBC Data Sources]#描述而已,没有测过不写行不行,理论上可行SQLSERVER2018912 = 9.12 DB

[SQLSERVER2018912]#Driver 指向的目录是FreeTDS编译生成的文件,类似一个驱动文件,稍后讲解安装方法Driver = /usr/local/freetds/lib/libtdsodbc.so
Description  = 9.12 DB,文字描述
Trace = No#Server 可以直接写 FreeTDS的freetds.conf 中配置的servertag节点名#使用freetds.conf配置时,port 也不用配置了。#因为在此直接写server IP时能配置的选项很少,而freetds.conf可以配置的细节更多#此处我已经配置了IP,freetds.conf中其实就可以不用配置。只要安装好freetds即可Server = 192.168.9.12Port = 1433#7.4或auto应该都可以。没有详细研究过TDS_Version = 7.4[Default]#全局默认配置。理论上可以不写#同上,默认使用Driver = /usr/local/freetds/lib/libtdsodbc.so

以上配置完成后就可以测试了。
使用 unixODBC编译时生成的 isql 程序来测试。路径在 /usr/bin/isql

/usr/bin/isql SQLSERVER2018912 数据库账号 密码

isql 的使用可以使用 isql –help 查看
配置如果没有错误,即可以看到连接到数据库了。就能使用sql语句查询东西了。
unixODBC配置完成后,就可以安装PHP扩展了

三、安装PHP的sqlsrv 扩展

pecl install sqlsrv

安装完后需要去php.ini中加载扩展,然后重启apache才能生效。  
 注意看说编译完后的屏幕打印的内容

Atas ialah kandungan terperinci Linux下PHP使用sqlSrv连接微软数据库的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn