β

Linux上使用php成功链接Microsoft SQL Server

技术尘埃@伯仁 43 阅读
  1. 安装PHP的SQL Server驱动
yum search freetds
yum install freetds php-mssql

或者下载编译安装

[root@server ~]# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
[root@server ~]# tar -zxvf freetds-stable.tgz
[root@server ~]# ./configure
[root@server ~]# make
[root@server ~]# make install

2.配置FreeTDS
打开 FreeTDS 配置文件(/etc/freetds.conf,如果是编译安装可能在其他位置),在配置文件末尾可以看到一些简单的配置案例,
[mybigserver]
host = dbserver.example.org
port = 1433
tds version = 7.0

"mybigserver" 是你的服务器的简称标识, 随便你怎么命名, 只要在使用的时候记得它就可以. host 和 port 就不用赘述了, 对于MS SQL SERVER , tds version 应该是 7.0 , 而 对于 Sybase ,tds version 应该是 5.0.

  1. 测试能否链接到服务器
#  ping 192.168.1.33
# telnet 192.168.1.33 1433
Trying 192.168.1.33...
Connected to 192.168.1.33.
Escape character is '^]'.
# tsql -H 192.168.1.33 -p 1433 -U my_mssql_username
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password: my_mssql_password
> use <em>mydatabase</em>
> select * from <em>mytable</em>
> go
# tsql -S mybigserver -U my_mssql_username
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password: my_mssql_password

如果能得到上面的运行结果,说明freetds运行正常。

如果出现:

locale is "en_ZA.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to DatabaseName
Error 20004 (severity 9):
    Read from the server failed
    OS error 104, "Connection reset by peer"
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server

错误是由于使用了错误版本的TDS。
要解决TSQL命令指定TDS之前的版本:
TDSVER=8.0 tsql -H 192.168.1.33 -p 433 -U my_mssql_username

还有就是您的IP地址列入白名单由数据库服务器?如果没有,你将无法连接。

  1. 测试PHP是否正常链接
    如果以上步骤都没有问题,下面代码测试PHP是否能正常链接:
<?php
$server = 'mybigserver ';
$link = mssql_connect($server, 'sa', 'phpfi');
if (!$link) {
    die('Something went wrong while connecting to MSSQL');
}
?>

这里,如果直接根据文档说明,使用mssql_connect(xxx,xxx,xxx)会得到一个让人抓不着头脑的错误消息“mssql_connect(): Unable to connect to server",这里主要是因为Centos系统开启了selinux,并且selinux默认阻止apache发起远程链接,可以执行如下命令解决:
setsebool -P httpd_can_network_connect=1

作者:技术尘埃@伯仁
别让梦想只是梦想而以......
原文地址:Linux上使用php成功链接Microsoft SQL Server, 感谢原作者分享。

发表评论