1. 安裝PHP的SQL Server驅(qū)動(dòng)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,如果是編譯安裝可能在其他位置),在配置文件末尾可以看到一些簡(jiǎn)單的配置案例,1 [mybigserver] 2 host = dbserver.example.org 3 port = 1433 4 tds version = 7.0 "mybigserver" 是你的服務(wù)器的簡(jiǎn)稱標(biāo)識(shí), 隨便你怎麼命名, 只要在使用的時(shí)候記得它就可以. host 和 port 就不用贅述了, 對(duì)于MS SQL SERVER , tds version 應(yīng)該是 7.0 , 而 對(duì)于 Sybase ,tds version 應(yīng)該是 5.0.3. 測(cè)試能否鏈接到服務(wù)器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> 如果能得到上面的運(yùn)行結(jié)果,說明freetds運(yùn)行正常。4. 測(cè)試PHP是否正常鏈接如果以上步驟都沒有問題,下面代碼測(cè)試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 ?> 這裏,如果直接根據(jù)文檔說明,使用mssql_connect(xxx,xxx,xxx)會(huì)得到一個(gè)讓人抓不著頭腦的錯(cuò)誤消息“mssql_connect(): Unable to connect to server",這裏主要是因爲(wèi)Centos系統(tǒng)開啓了selinux,並且selinux默認(rèn)阻止apache發(fā)起遠(yuǎn)程鏈接,可以執(zhí)行如下命令解決:1 setsebool -P httpd_can_network_connect=1
CentOS 5.4 Linux 下的 PHP(FastCGI) 需要連接相關(guān)部門的SQL Server 2000數(shù)據(jù)庫,配置了擴(kuò)展FreeTDS擴(kuò)展。1、編譯安裝FreeTDSmkdir -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 輸入以下內(nèi)容:引用[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 2、編譯安裝PHP自帶MSSQL擴(kuò)展進(jìn)入本地已存在的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 3、在php.ini配置文件中增加mssql.sovi /usr/local/webserver/php/etc/php.ini 增加一行:引用extension = "mssql.so" 4、重啓PHP FastCGI/usr/local/webserver/php/sbin/php-fpm restart 5、測(cè)試文件(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對(duì)MSSQL的支持Leave a reply其實(shí)很少會(huì)有連接SQL Server的機(jī)會(huì),不過我們公司剛好有個(gè)應(yīng)用需要使用的SQL Server的數(shù)據(jù)庫,所以也知道給LNMP安裝MSSQL的擴(kuò)展。搜索網(wǎng)上的相關(guān)文章一般的解決方案是Freetds,F(xiàn)reetds的主要功能就是讓Linux系統(tǒng)可以訪問SQL Server服務(wù)。安裝FreetdsFreetds 官方網(wǎng)站是 http://www.freetds.org,可以去官方網(wǎng)站下載程序,文中下載的是0.92.79版本。wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-0.92.79.tar.gz然後解壓,並且編譯安裝tar -zxvf freetds-0.92.79.tar.gzcd freetds-0.92.79./configure --prefix=/usr/local/freetdsgmakegmake install安裝完成後可以使用命令測(cè)試下/usr/local/freetds/bin/tsql -S 192.168.0.10:1433 -U sa安裝PHP的MSSQL擴(kuò)展本服務(wù)器使用的是lnmp集成環(huán)境,php是5.3.21;如果是單獨(dú)安裝php的也一樣;先進(jìn)入下載加壓後的PHP文件目錄,然後編譯安裝cd /data/lnmp0.9-full/php-5.3.21cd ext/mssql/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetdsmakemake install隨後在php.ini中添加擴(kuò)展vim /usr/local/php/etc/php.ini在最後加入一行extension = "mssql.so"最後重啓php即可配置Freetdsvim /usr/local/freetds/etc/freetds.conf在文件中加入以下語句[sqlservername]host = 192.168.0.10port = 1433tds version = 7.0client charset = UTF-8PHP中測(cè)試連接新建一個(gè)php文件,放入以下代碼$conn = mssql_connect("sqlservername", "sa", "password") or die ("無法連接");echo $conn;現(xiàn)在你的php已經(jīng)完全支持連接SQL Server了。
//demo
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/freetds
/usr/local/webserver/php/bin/phpize
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/
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);
聯(lián)系客服