分享

Centos下添加PHP對MSSQL的支持

 老鹤闲聊 2016-01-15
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擴展。
1、編譯安裝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 
2、編譯安裝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  
3、在php.ini配置文件中增加mssql.so
vi /usr/local/webserver/php/etc/php.ini  
增加一行:
引用
extension = "mssql.so" 
4、重啓PHP FastCGI
/usr/local/webserver/php/sbin/php-fpm restart  
5、測試文件(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.,可以去官方網站下載程序,文中下載的是0.92.79版本。
wget ftp://ftp./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了。

//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);


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多