为了账号安全,请及时绑定邮箱和手机立即绑定

Linux环境PHP5.5以上连接SqlServer2008

标签:
Linux

linux版本:64位CentOS 6.4

Nginx版本:nginx1.8.0

php版本:php5.5.28

Sqlserver:2008

关于Linux环境安装Nginx+PHP参考《Linux环境Nginx安装与调试以及PHP安装 》即可。一般来说,PHP+mysql是最经典的组合,跑在Linux环境是非常好的,如果是PHP+Sqlserver是跑在windows环境下的。

今天需要Linux环境下PHP调用Sqlserver,用了一天的时间,终于把这个问题彻底研究清楚,网上其他类似文章我大都看了,其实有的是因为太久远不适用,有的有错误,还有的有几个关键问题没有说清楚,看此文其他可以忽略了,说真的踩坑真的很累,也没必要,照着这篇来做就是,所以本文才号称是全网最经典无错版,其实这么说主要是希望大家节省时间。

1.首先需要编译安装FreeTDS

说明:FreeTDS官网下载比较慢,可以从本人上传的这里一样很快下载:http://download.csdn.net/detail/21aspnet/8997397

# wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
# tar -zxvf freetds-0.91.tar.gz
# cd freetds-0.91

需要注意的就是这里的--with-tdsver=7.1,这个非常重要,网上有的说是7.2,有的说是8.0,关于这个的问题可以看文末参考帖子

# ./configure --prefix=/usr/local/freetds --with-tdsver=7.1 --enable-msdblib
# make && make install

安装好会看到这样的信息:

https://img1.sycdn.imooc.com//5b066e06000190ba05640199.jpg

 

配置FreeTDS

# cd ../

# echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
   # ldconfig

验证FreeTDS

这一步非常重要,通过才可以继续,不然后面的步骤都是无意义的。

首先看看版本信息

# /usr/local/freetds/bin/tsql -C

https://img1.sycdn.imooc.com//5b066e130001e95505060176.jpg

如果前面配置的时候--with-tdsver=7.1如果写的是7.2和8.0或者其他都会这里TDS版本是5.0,原因见后面的参考信息中的帖子。

# /usr/local/freetds/bin/tsql -H 数据库服务器IP:XXX -p 1433 -U 用户名 -P 密码

或者直接

# /usr/local/freetds/bin/tsql -H 数据库服务器IP -p 1433 -U 用户名 -P 密码

https://img1.sycdn.imooc.com//5b066e1d00017b2e05720143.jpg

关于freetds/etc/freetds.conf  下面可以参考线上可以不配置

重要说明:很多其他帖子写了需要配置/usr/local/freetds/etc/freetds.conf,另外需要注意的是etc下的freetds.conf不同于前面那个freetds.conf。

其实默认已经生成好了etc下的freetds.conf,其实这是多余的,不过配置了也没有问题。 

如果配置了这里,那么PHP页面就可以使用这里的配置,不然PHP页面指定一样可以。

默认是这样的:

https://img1.sycdn.imooc.com//5b066e3000017b8107680507.jpg

修改[egServer70]为这样:


1

2

3

4

[egServer70]

    host = 192.168.1.235 这个是数据库服务器IP

    port = 1433

    tds version = 7.1

其他都不用动,关于[egServer70]的名字也是随意的,这个就是给PHP调用的,一致即可。 

3.添加PHP扩展mssql和pdo的pdo_dblib

说明:这2种扩展都可以达到相同的目的,选其一即可。

(1).增加PHP扩展mssql 

# cd /usr/php-5.5.28/ext/mssql/

linux下用phpize给PHP动态添加扩展
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
# make && make install

https://img1.sycdn.imooc.com//5b066e560001392305450257.jpg


(2).增加PHP扩展pdo的pdo_dblib  线上部署使用
# cd /usr/php-5.5.28/ext/pdo_dblib/ 此目录是php源文件版本文件目录下比如 lnmp/src/phpxxx/ext/pdo_dblib/ 
 下面用phpize给PHP动态添加扩展
# [root@xxx pdo_dblib]# /usr/local/php/bin/phpize 执行,此目录是php生产环境下安装的具体目录

Configuring for:

PHP Api Version:         20121113

Zend Module Api No:      20121212

Zend Extension Api No:   220121212

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-dblib=/usr/local/freetds/

# make && make install 

执行完成后会有一个提示目录,这个下面就是模块so目录

 xxx/php/lib/php/extensions/no-debug-non-zts-20121212/ 

(3).在php.ini配置文件中增加.so

# cd /usr/local/php/etc下的php.ini

增加:

?

1

2

extension = "mssql.so"

extension ="pdo_dblib.so"

;   extension=/path/to/extension/msql.so

extension=xxx/php/lib/php/extensions/no-debug-non-zts-20121212/pdo_dblib.so  


如果你只需要上述2种扩展之一,自然只要新增其中一个的.so扩展到php.ini即可。

(4).重启PHP FastCGI# killall php-fpm
# /etc/init.d/php-fpm

如果没有正确生成扩展是不能重启php-fpm的。

这时候在phpinfo里就可以看到扩展添加成功的信息了。

https://img1.sycdn.imooc.com//5b066e71000115c805810482.jpg

https://img1.sycdn.imooc.com//5b066e790001584c06050086.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消