1. 安装PHP的SQL Server驱动 1 yum search freetds 2 yum install freetds php-mssql 或者下载编译安装 1 [root@server ~]# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz 2 [root@server ~]# tar -zxvf freetds-stable.tgz 3 [root@server ~]# ./configure 4 [root@server ~]# make 5 [root@server ~]# make install 2.配置FreeTDS 打开 FreeTDS 配置文件(/etc/freetds.conf,若是是编译安装可能在其余位置),在配置文件末尾能够看到一些简单的配置案例, 1 [mybigserver] 2 host = dbserver.example.org 3 port = 1433 4 tds version = 7.0 "mybigserver" 是你的服务器的简称标识, 随便你怎么命名, 只要在使用的时候记得它就能够. host 和 port 就不用赘述了, 对于MS SQL SERVER , tds version 应该是 7.0 , 而 对于 Sybase ,tds version 应该是 5.0. 3. 测试可否连接到服务器 1 # ping 192.168.1.33 1 # telnet 192.168.1.33 1040 2 Trying 192.168.1.33... 3 Connected to 192.168.1.33. 4 Escape character is '^]'. 1 # tsql -H 192.168.1.33 -p 1040 -U my_mssql_username 2 locale is "en_US.UTF-8" 3 locale charset is "UTF-8" 4 Password: my_mssql_password 5 1> use <em>mydatabase</em> 6 2> select * from <em>mytable</em> 7 3> go 1 # tsql -S mybigserver -U my_mssql_username 2 locale is "en_US.UTF-8" 3 locale charset is "UTF-8" 4 Password: my_mssql_password 5 1> 若是能获得上面的运行结果,说明freetds运行正常。 4. 测试PHP是否正常连接 若是以上步骤都没有问题,下面代码测试PHP是否能正常连接: view sourceprint? 1 <?php 2 $server = 'mybigserver '; 3 $link = mssql_connect($server, 'sa', 'phpfi'); 4 if (!$link) { 5 die('Something went wrong while connecting to MSSQL'); 6 } 7 ?> 这里,若是直接根据文档说明,使用mssql_connect(xxx,xxx,xxx)会获得一个让人抓不着头脑的错误消息“mssql_connect(): Unable to connect to server",这里主要是由于Centos系统开启了selinux,而且selinux默认阻止apache发起远程连接,能够执行以下命令解决: 1 setsebool -P httpd_can_network_connect=1
CentOS 5.4 Linux 下的 PHP(FastCGI) 须要链接相关部门的SQL Server 2000数据库,配置了扩展FreeTDS扩展。 一、编译安装FreeTDS mkdir -p /data0/software/ cd /data0/software/ wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz tar zxvf freetds-stable.tgz cd freetds-0.82/ ./configure --prefix=/usr/local/webserver/freetds --with-tdsver=8.0 --enable-msdblib make && make install cd ../ echo "/usr/local/webserver/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf ln -s /usr/local/webserver/freetds/lib/libsybdb.so.5.0.0 /usr/local/webserver/freetds/lib/libsybdb.so.4 /sbin/ldconfig rm -f /usr/local/webserver/freetds/etc/freetds.conf vi /usr/local/webserver/freetds/etc/freetds.conf 输入如下内容: 引用 [global] # TDS protocol version ; tds version = 4.2 # Whether to write a TDSDUMP file for diagnostic purposes # (setting this to /tmp is insecure on a multi-user system) ; dump file = /tmp/freetds.log ; debug flags = 0xffff # Command and connection timeouts ; timeout = 10 ; connect timeout = 10 # If you get out-of-memory errors, it may mean that your client # is trying to allocate a huge buffer for a TEXT field. # Try setting 'text size' to a more reasonable limit text size = 64512 host = mssql.yourdomain.com port = 1433 tds version = 8.0 client charset = UTF-8 二、编译安装PHP自带MSSQL扩展 进入本地已存在的php-5.2.XX源码包目录: cd /data0/software/php-5.2.XX/ext/mssql/ /usr/local/webserver/php/bin/phpize ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/webserver/freetds/ make && make install 三、在php.ini配置文件中增长mssql.so vi /usr/local/webserver/php/etc/php.ini 增长一行: 引用 extension = "mssql.so" 四、重启PHP FastCGI /usr/local/webserver/php/sbin/php-fpm restart 五、测试文件(test_mssql.php): php header("Content-type: text/html; charset=utf-8"); $msdb=mssql_connect("mssql.yourdomain.com:1433","username","password"); if (!$msdb) { echo "connect sqlserver error"; exit; } mssql_select_db("database_name",$msdb); $result = mssql_query("SELECT top 5 * FROM table", $msdb); while($row = mssql_fetch_array($result)) { var_dump($row); } mssql_free_result($result); ?>
Centos下添加PHP对MSSQL的支持 Leave a reply 其实不多会有链接SQL Server的机会,不过咱们公司恰好有个应用须要使用的SQL Server的数据库,因此也知道给LNMP安装MSSQL的扩展。 搜索网上的相关文章通常的解决方案是Freetds,Freetds的主要功能就是让Linux系统能够访问SQL Server服务。 安装Freetds Freetds 官方网站是 http://www.freetds.org,能够去官方网站下载程序,文中下载的是0.92.79版本。 wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-0.92.79.tar.gz 而后解压,而且编译安装 tar -zxvf freetds-0.92.79.tar.gz cd freetds-0.92.79 ./configure --prefix=/usr/local/freetds gmake gmake install 安装完成后可使用命令测试下 /usr/local/freetds/bin/tsql -S 192.168.0.10:1433 -U sa 安装PHP的MSSQL扩展 本服务器使用的是lnmp集成环境,php是5.3.21;若是是单独安装php的也同样;先进入下载加压后的PHP文件目录,而后编译安装 cd /data/lnmp0.9-full/php-5.3.21 cd ext/mssql /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds make make install 随后在php.ini中添加扩展 vim /usr/local/php/etc/php.ini 在最后加入一行 extension = "mssql.so" 最后重启php便可 配置Freetds vim /usr/local/freetds/etc/freetds.conf 在文件中加入如下语句 [sqlservername] host = 192.168.0.10 port = 1433 tds version = 7.0 client charset = UTF-8 PHP中测试链接 新建一个php文件,放入如下代码 $conn = mssql_connect("sqlservername", "sa", "password") or die ("没法链接"); echo $conn; 如今你的php已经彻底支持链接SQL Server了。
//demophp
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/freetdshtml
/usr/local/webserver/php/bin/phpizelinux
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/web
TDSVER=7.0 /usr/local/freetds/bin/tsql -H ip -p 1433 -U user -P password [myserver] host = ip port = 1433 tds version = 7.2 client charset = utf8 $result = mssql_query("SELECT top 5 * FROM article", $conn); while($row = mssql_fetch_array($result)) { var_dump($row); } mssql_free_result($result);