最近项目增加需求要访问SQL SERVER数据库进行数据操作,过程有一些曲折,所以写下来让需要的朋友看到
线上服务器是红帽 linux4.4 PHP5.6
本地是win10系统 PHP5.6
先开始本地windows搭建
首先说一下,有的人可能在搜索查资料的时候,发现很多说的是用mssql的,所以注明一下,mssql扩展在PHP5.2版本以上就已经废弃了,不再使用,除非你使用的是PHP5.2以下版本,可以去搜一下具体怎么配置,5.2以上版本都可以使用以下方式连接sqlserver数据库。
查看自己的PHP版本系统是x86还是x64(不是你电脑系统),如下图
x86
如果是x86就去微软下载对应版本的插件 点击跳转 不同的PHP版本看下图(x64在下面)
比如我的是PHP5.6就去下载3.2版本
点击红色download下载,选择SQLSRV32.EXE
下载完成以后会得到一个exe文件
打开之后点击yes选择一个目录,程序会把相应的文件释放到选择的目录
选择这两个文件(因为我是5.6,其他版本自己选择)
php_pdo_sqlsrv_56_ts.dll php_sqlsrv_56_ts.dll
找到你本地的PHP安装目录,比如我的php5.6.38,点击进去选择ext文件夹
把刚才的两个文件复制进去
接下来打开PHP.ini(找不到请百度)
搜索extension,在下图位置加入下面两句,然后重启环境
extension=php_pdo_sqlsrv_56_ts.dll extension=php_sqlsrv_56_ts.dll
重启过后打开phpinfo查看是否安装成功,出现这两个就是安装成功了
如果出现下图,说明你没安装 odbc 需要安装的请去微软官网 点击下载
(我已经安装过了,所以这张图是借别人的)
然后就请自行在项目中测试了
x64
操作方法与上方一致,但是PHP7以下不支持x64,(PHP7以上自行测试,下载链接在上面)所以就需要用到民间版本的x64
我已经上传了点击下载
windows版本结束
服务器Linux搭建
如果你的PHP版本是7.0及以上,可以使用微软官方提供的方案 点击跳转
因为楼主的服务器版本是5.6版本,所以下面提供的方法也是5.6,如不适用请关闭
首先下载安装freetds,如果不能下载,我这边已经上传了点击下载
下载 wget ftp://ftp.freetds.org/pub/freetds/current/freetds-current.tar.gz 解压 tar zxvf freetds-current.tar.gz 到解压目录 cd freetds-stable 执行 ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib 再执行 make && make install 验证是否安装成功 /usr/local/freetds/bin/tsql -C
解释:–prefix为设置FreeTDS的安装目录,–with-tdsver是设置TDS版本, –enable-msdblib为是否允许Microsoft数据库函数库
如果你的PHP是编译安装的不需要重新下载PHP,直接去安装目录,我的目录就是/www/server/php/56/src/ext
在这个目录下面找到 pdo_dblib目录,进去
开始安装pdo_dblib扩展
移动目录 cd /www/server/php/56/src/ext/pdo_dblib 找到你的phpize(下方是我的) /www/server/php/56/bin/phpize 执行(找到你的php-config目录,在下方更改) ./configure --with-php-config=/www/server/php/56/bin/php-config --with-pdo-dblib=/usr/local/freetds 再执行 make && make install 安装完成,然后配置php.ini,搜索extension,然后加入下面这句,重启(service php-fpm restart)你的环境,如线上重启比较危险,可以选择重载配置(service php-fpm reload) extension=/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/pdo_dblib.so
出现pdo_dblib,安装成功
楼主用的tinkphp5.1开发的,下面放上数据库连接,需要用到tp5.1db类库文件 点击下载
// 数据库类型 'type' => 'dblib', // 服务器地址 'hostname' => '服务器ip', // 数据库名 'database' => 'xx', // 用户名 'username' => 'xx', // 密码 'password' => 'xx', // 端口 'hostport' => '3306',
如果不是编译安装的,请往下看
需要先下载PHP 点击跳转 ,注意你下载的PHP版本,要和服务器PHP版本对应,下载好了之后解压,重复上方操作
开始安装pdo_dblib扩展(请到上面查看)
下面这种不适合ThinkPHP(CI测试可以支持)
跟上面一样,首先下载安装freetds,如果不能下载,我这边已经上传了点击下载
下载 wget ftp://ftp.freetds.org/pub/freetds/current/freetds-current.tar.gz 解压 tar zxvf freetds-current.tar.gz 到解压目录 cd freetds-stable 执行 ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib 再执行 make && make install 验证是否安装成功 /usr/local/freetds/bin/tsql -C
然后安装mssql
下载PHP(如果是编译安装,前面两步不用看,直接到进入目录) wget http://cn2.php.net/distributions/php-5.6.38.tar.gz 解压(解压到哪里就进入那里,如/root/php-5.6.38) tar -zxvf php-5.6.38.tar.gz 进入目录(如果是编译安装,不需要下载PHP,直接执行下方命令,不是编译,就cd /root/php-5.6.38/src/ext/mssql) cd /www/server/php/56/src/ext/mssql 找到你的phpize(下方是我的) /www/server/php/56/bin/phpize 执行 ./configure --with-php-config=/www/server/php/56/bin/php-config --with-mssql=/usr/local/freetds 再执行 make && make install 安装完成,然后配置php.ini,搜索extension,然后加入下面这句,重启(service php-fpm restart)你的环境,如线上重启比较危险,可以选择重载配置(service php-fpm reload) extension=/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/mssql.so
教程到此结束