首頁 後端開發 php教程 Linux下PHP使用sqlSrv連接微軟資料庫的方法

Linux下PHP使用sqlSrv連接微軟資料庫的方法

Mar 03, 2018 pm 01:53 PM
linux php

PHP使用sqlSrv連接微軟的SQLSERVER資料庫時需要使用到擴充 pdo_srv。
pdo_srv 擴展安裝可以直接使用pecl 安裝

寫本文時的環境是 
 ubuntu 16.04 LTS  
 php 7.0.27  
 unixODBC 2.3.5  
 FreeTDS 1.00.82
 2018-03-02日

pecl
 程式在PHP安裝目錄下的bin目錄中,如果你的PHP目錄不在Linux的環境變數中。或是你的pecl程式沒有連結到系統bin路徑下,會提示你pecl程式未安裝。

安裝sqlsrv 需要unixODBC的支持,所以在安裝之前如果你沒有安裝過unixODBC還需要先安裝unixODBC,而unixODBC需要FreeTDS來連接SQLSERVER,因為unixODBC只是定義了一套通用接口,並沒有具體的實作方法,

一、安裝FreeTDS
a)、下載

http://www.freetds.org/

b)、編譯安裝

./configure --with-tdsver=auto --prefix=/usr/local/freetds --enable-msdblib --with-gnu-ld --enable-shared --enable-static --with-unixodbc=/usr/localmake
make install
登入後複製
登入後複製

網上有些教程裡面寫著–with-tdsver=8.0 ,我在編譯的時候報錯,具體支持的值可以看./configure –help 中with -tdsver的描述

安裝完成後會在/usr/local/freetds中產生一個etc目錄,我們需要用到freetds.conf檔。
c)、設定
配置freetds.conf檔。可以不用設定

不配置freetds.conf的方法可以見unixODBC的設定環節

[global]#全局配置tds version = auto#更多的配置可以参考freetds官方文档,我这里这样配置已经够用了[servertag]#定义一个叫 servertag 的节点,这个节点的名称可以自定义的,不是固定#所有 # 符号的内容都可以不写在配置文件中,这里只是注释解释用#更多的细节配置看官方描述#数据库的连接IP地址host = 192.168.9.12 #数据库的端口port = 1433 #连接时默认打开的库名,【可以不配置此项】database = master 
#tds version 有全局配置,这里也可以不写tds version = auto
登入後複製
登入後複製

二、安裝unixODBC

#a)、下載

  https://sourceforge.net/projects/unixodbc/files/unixODBC/
  http://www.unixodbc.org/
  以上两个网站都可以下载到,建议到第二个官网下载吧。
登入後複製
登入後複製

b)、編譯安裝

./configure --prefix=/usr/local/unixODBC --includedir=/usr/include  --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etcmake 
make install
登入後複製
登入後複製

c)、設定
   在 /etc/odbc.ini 中加入設定

網路上有教學說編譯安裝的是在/usr/local/etc/odbc.ini
 ,雖然編譯後有產生此文件,但配置在這個文件裡面並不生效。還是要在/etc/odbc.ini配置

[ODBC Data Sources]#描述而已,没有测过不写行不行,理论上可行SQLSERVER2018912 = 9.12 DB

[SQLSERVER2018912]#Driver 指向的目录是FreeTDS编译生成的文件,类似一个驱动文件,稍后讲解安装方法Driver = /usr/local/freetds/lib/libtdsodbc.so
Description  = 9.12 DB,文字描述
Trace = No#Server 可以直接写 FreeTDS的freetds.conf 中配置的servertag节点名#使用freetds.conf配置时,port 也不用配置了。#因为在此直接写server IP时能配置的选项很少,而freetds.conf可以配置的细节更多#此处我已经配置了IP,freetds.conf中其实就可以不用配置。只要安装好freetds即可Server = 192.168.9.12Port = 1433#7.4或auto应该都可以。没有详细研究过TDS_Version = 7.4[Default]#全局默认配置。理论上可以不写#同上,默认使用Driver = /usr/local/freetds/lib/libtdsodbc.so
登入後複製
登入後複製

以上配置完成後就可以測試了。
使用 unixODBC編譯時產生的 isql 程式來測試。路徑在 /usr/bin/isql

/usr/bin/isql SQLSERVER2018912 数据库账号 密码
登入後複製
登入後複製

isql 的使用可以使用 isql –help 查看
配置如果沒有錯誤,即可以看到連接到資料庫了。就能使用sql語句查詢東西了。
unixODBC配置完成後,就可以安裝PHP擴展了

三、安裝PHP的sqlsrv 擴展

pecl install sqlsrv
登入後複製
登入後複製

安裝完後需要去php.ini載入擴展,然後重啟apache才能生效。  
 注意看說編譯完後的螢幕列印的內容

寫本文時的環境是  
 ubuntu 16.04 LTS  
 php 7.0.27  
#  unixODBC 2.3.5  
 FreeTDS 1.00.82
 2018-03-02日

PHP使用sqlSrv連接微軟的SQLSERVER資料庫時需要使用到擴充 pdo_srv。
pdo_srv 擴充安裝可以直接使用 pecl 安裝

pecl
 程式在PHP安裝目錄下的bin目錄中,如果你的PHP目錄不在Linux的環境變數中。或是你的pecl程式沒有連結到系統bin路徑下,會提示你pecl程式未安裝。

安裝sqlsrv 需要unixODBC的支持,所以在安裝之前如果你沒有安裝過unixODBC還需要先安裝unixODBC,而unixODBC需要FreeTDS來連接SQLSERVER,因為unixODBC只是定義了一套通用接口,並沒有具體的實作方法,

一、安裝FreeTDS
a)、下載

http://www.freetds.org/

b)、編譯安裝

./configure --with-tdsver=auto --prefix=/usr/local/freetds --enable-msdblib --with-gnu-ld --enable-shared --enable-static --with-unixodbc=/usr/localmake
make install
登入後複製
登入後複製

網上有些教程裡面寫著–with-tdsver=8.0 ,我在編譯的時候報錯,具體支持的值可以看./configure –help 中with -tdsver的描述

安裝完成後會在/usr/local/freetds中產生一個etc目錄,我們需要用到freetds.conf檔。
c)、設定
配置freetds.conf檔。可以不用設定

不配置freetds.conf的方法可以見unixODBC的設定環節

[global]#全局配置tds version = auto#更多的配置可以参考freetds官方文档,我这里这样配置已经够用了[servertag]#定义一个叫 servertag 的节点,这个节点的名称可以自定义的,不是固定#所有 # 符号的内容都可以不写在配置文件中,这里只是注释解释用#更多的细节配置看官方描述#数据库的连接IP地址host = 192.168.9.12 #数据库的端口port = 1433 #连接时默认打开的库名,【可以不配置此项】database = master 
#tds version 有全局配置,这里也可以不写tds version = auto
登入後複製
登入後複製

二、安裝unixODBC

#a)、下載

  https://sourceforge.net/projects/unixodbc/files/unixODBC/
  http://www.unixodbc.org/
  以上两个网站都可以下载到,建议到第二个官网下载吧。
登入後複製
登入後複製

b)、編譯安裝

./configure --prefix=/usr/local/unixODBC --includedir=/usr/include  --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etcmake 
make install
登入後複製
登入後複製

c)、設定
   在 /etc/odbc.ini 中加入設定

網路上有教學說編譯安裝的是在/usr/local/etc/odbc.ini
 ,雖然編譯後有產生此文件,但配置在這個文件裡面並不生效。還是要在/etc/odbc.ini配置

[ODBC Data Sources]#描述而已,没有测过不写行不行,理论上可行SQLSERVER2018912 = 9.12 DB

[SQLSERVER2018912]#Driver 指向的目录是FreeTDS编译生成的文件,类似一个驱动文件,稍后讲解安装方法Driver = /usr/local/freetds/lib/libtdsodbc.so
Description  = 9.12 DB,文字描述
Trace = No#Server 可以直接写 FreeTDS的freetds.conf 中配置的servertag节点名#使用freetds.conf配置时,port 也不用配置了。#因为在此直接写server IP时能配置的选项很少,而freetds.conf可以配置的细节更多#此处我已经配置了IP,freetds.conf中其实就可以不用配置。只要安装好freetds即可Server = 192.168.9.12Port = 1433#7.4或auto应该都可以。没有详细研究过TDS_Version = 7.4[Default]#全局默认配置。理论上可以不写#同上,默认使用Driver = /usr/local/freetds/lib/libtdsodbc.so
登入後複製
登入後複製

以上配置完成後就可以測試了。
使用 unixODBC編譯時產生的 isql 程式來測試。路徑在 /usr/bin/isql

/usr/bin/isql SQLSERVER2018912 数据库账号 密码
登入後複製
登入後複製

isql 的使用可以使用 isql –help 查看
配置如果沒有錯誤,即可以看到連接到資料庫了。就能使用sql語句查詢東西了。
unixODBC配置完成後,就可以安裝PHP擴展了

三、安裝PHP的sqlsrv 擴展

pecl install sqlsrv
登入後複製
登入後複製

安裝完後需要去php.ini載入擴展,然後重啟apache才能生效。  
 注意看說編譯完後的螢幕列印的內容

以上是Linux下PHP使用sqlSrv連接微軟資料庫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

說明匹配表達式(PHP 8)及其與開關的不同。 說明匹配表達式(PHP 8)及其與開關的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表達式是一種新的控制結構,用於根據表達式的值返回不同的結果。 1)它類似於switch語句,但返回值而非執行語句塊。 2)match表達式使用嚴格比較(===),提升了安全性。 3)它避免了switch語句中可能的break遺漏問題,增強了代碼的簡潔性和可讀性。

描述...(SPLAT)操作員在php函數參數和數組解開包裝中的目的和用法。 描述...(SPLAT)操作員在php函數參數和數組解開包裝中的目的和用法。 Apr 06, 2025 am 12:07 AM

PHP中的...(splat)操作符用於函數參數和數組解包,提升代碼簡潔性和效率。 1)函數參數解包:將數組元素作為參數傳遞給函數。 2)數組解包:將一個數組解包到另一個數組中或作為函數參數。

什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? 什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? Apr 07, 2025 am 12:02 AM

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

您如何防止班級被擴展或方法在PHP中被覆蓋? (最終關鍵字) 您如何防止班級被擴展或方法在PHP中被覆蓋? (最終關鍵字) Apr 08, 2025 am 12:03 AM

在PHP中,final關鍵字用於防止類被繼承和方法被重寫。 1)標記類為final時,該類不能被繼承。 2)標記方法為final時,該方法不能被子類重寫。使用final關鍵字可以確保代碼的穩定性和安全性。

C語言條件編譯:新手入門到實戰應用的詳盡指南 C語言條件編譯:新手入門到實戰應用的詳盡指南 Apr 04, 2025 am 10:48 AM

C語言條件編譯是一種根據編譯時條件選擇性編譯代碼塊的機制,入門方法有:使用#if和#else指令根據條件選擇代碼塊。常用條件表達式包括STDC、_WIN32和linux。實戰案例:根據操作系統打印不同消息。根據系統位數使用不同的數據類型。根據編譯器支持不同的頭文件。條件編譯增強了代碼的可移植性和靈活性,使其適應編譯器、操作系統和CPU架構變化。

無法以 root 身份登錄 mysql 無法以 root 身份登錄 mysql Apr 08, 2025 pm 04:54 PM

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

libv是兩個 libv是兩個 Apr 03, 2025 pm 08:03 PM

我開發了一個名為Lua-Libuv的項目,並樂於分享我的經驗。項目初衷是探索如何利用Libuv(一個用C語言編寫的異步I/O庫)構建簡單的HTTP服務器,而無需深入掌握C語言。借助ChatGPT的輔助,我完成了HTTP.C的基礎代碼。在處理持久連接時,我成功實現了在適當的時機關閉連接並釋放資源。起初,我嘗試創建一個簡單的服務器,通過關閉連接來結束主程序,但遇到了一些問題。我嘗試過使用流式傳輸發送數據塊,雖然有效,但這會阻塞主線程。最終,我決定放棄這個方法,因為我的目標並非深入學習C語言。最終,我

See all articles