PHP天然就對MySQL有良好的支持,但是想要用PHP對SQL Server進行操作,則需要花點時間了。今天剛好團隊裡的一個項目需要用PHP對SQL Server進行操作,遂幫忙配置好環境。
首先說明下,服務器的系統版本為SUSE Linux Enterprise Server 10 SP3。
1. 安裝FreeTDS
地址:FreeTDS
復制代碼 代碼如下:
wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar zxvf freetds-stable.tgz
cd freetds-0.82
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib --enable-dbmfix
make && make install
成功安裝完,最好更新下動態連接庫緩存:
復制代碼 代碼如下:
echo "/usr/local/freetds/lib" >> /etc/ld.so.conf
ldconfig
2. 配置FreeTDS及連接測試
FreeTDS的配置文件放在安裝目錄的etc裡,根據第一步的configure參數,我們FreeTDS安裝在/usr/local/freetds:
復制代碼 代碼如下:
vim /usr/local/freetds/etc/freetds.conf
由於不太清楚FreeTDS的具體有哪些可配置項,這裡就不深入了,但是提供個比較重要的配置,用來解決中文亂碼的問題。在配置文件添加如下語句:
復制代碼 代碼如下:
client charset = utf8
然後,我們使用tsql命令測試下是否能正常連接上SQL Server數據庫:
復制代碼 代碼如下:
cd /usr/local/freetds/bin
./tsql -H 192.168.0.254 -p 1433 -U sa -P 123456
正常連接的話應該顯示如下語句:
復制代碼 代碼如下:
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
1>
3. 安裝php的mssql擴展
服務器上的php版本為5.3.13,php已安裝在/usr/local/services/php下,擴展的目錄為/usr/local/services/php/extensions。下面是安裝mssql擴展的方法:
復制代碼 代碼如下:
cd php-5.3.13/ext/mssql/
/usr/local/services/php/bin/phpize
./configure --with-php-config=/usr/local/services/php/bin/php-config --with-mssql=/usr/local/freetds
make #生成擴展文件,放在當前目錄的module文件夾下
cp modules/mssql.so /usr/local/services/php/extensions/ #把擴展文件復制到PHP的擴展目錄下
4. 配置php.ini並驗證安裝結果
打開php.ini,添加如下擴展語句:
復制代碼 代碼如下:
extension=mssql.so
重啟PHP服務後(服務器用的是php-fpm),打印phpinfo,出現如下配置則代表php能正常操作SQL Server了。
1,或許不用不裝,你自己去裝個unixODBC即可解決這個問題的
2.或許linux安全限制了,將/etc/selinux 中
SELINUX=enforce
改為 :SELINUX=disabled
3.或許mssql限制無法遠程登錄
有的模塊還需要重新編譯php的。不是光修改php.ini那麼簡單的