PHP 板


LINE

看板 PHP  RSS
版上各位大大午安,大家好,打給厚,胎嘎猴 情況是這樣 魯叔我一直以來都是使用Linux虛擬主機(X朵)使用PHP及MySQL的環境編寫網站 最近被要求要去另一台虛擬主機的Windows Server + SQL 2012取資料,甚至覆寫資料 一開始魯叔沒想太多,因為PHP版本太舊,就用mssql_connect,發現連不上 找了找資料,改用ODBC_connect,咦?還是連不上 會不會是SQL這端設定問題?參考了這篇文章對SQL連線的診斷 : http://bit.ly/31xyPAs 應該是能外部連線,那改試試PDO,一樣不行 看許多人用sqlsrv成功連線,無奈Linux這端的主機只能使用Cpanel做操作 再加上之前網站一直是用PHP 5.6的古董函式 mysql_query,若改為7.0+版本網站會炸裂 於是只能不斷在mssql_connect及odbc_connect來回嘗試 示意圖大概如下: https://i.imgur.com/3o6MsI4.jpg (PHP mssql, odbc)
https://i.imgur.com/dTqcJlO.jpg (Windows ODBC, SQL Server property)
當使用mssql_connect時,錯誤訊息為: Warning: mssql_connect(): Unable to connect to server: xxx.xx.xxx.xx in /home2/xxxxxxxx/xxxxxx/SQLtest.php on line 9 Could not connect: 當使用odbc_connect時,也嘗試調用以下三個不同的$driver: $driver = '{SQL Server Native Client 11.0}'; $driver = '{SQL Server Native Client 10.0}'; $driver = '{SQL Server}'; $server = 'xxx.xx.xxx.xx'; $database = 'TEST'; $user = 'sa'; $password = '123'; $connection = odbc_connect("Driver=$driver;Server=$server;Database=$database;", "$user", "$password"); 錯誤訊息長的差不多: Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found, SQL state 01000 in SQLConnect in /home2/xxxxxxxx/xxxxxx/SQLtest.php on line 25 Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib 'SQL Server Native Client 10.0' : file not found, SQL state 01000 in SQLConnect in /home2/xxxxxxxx/xxxxxx/SQLtest.php on line 25 Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib 'SQL Server Native Client 11.0' : file not found, SQL state 01000 in SQLConnect in /home2/xxxxxxxx/xxxxxx/SQLtest.php on line 25 嘗試使用odbc的時候: $driver='{ODBC Driver 11 for SQL Server}'; $dsn='xxx.xx.xxx.xx'; $hostname='server'; $database='TEST'; $username='sa'; $password='123'; $conn = new PDO("odbc:$dns"); $conn = new PDO("dblib:host=$hostname;dbname=$database", $username,$password); $conn = new PDO("sqlsrv:Server=$hostname;Database=$database", $username, $password); $conn = new PDO("odbc:Driver=$driver;Server=$hostname;Database=$database", $username, $password); 錯誤訊息為: Notice: Undefined variable: dns in /home2/xxxxxxxx/xxxxxx/SQLtest.php on line 36 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[IM002] SQLConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified' in /home2/xxxxxxxx/xxxxxx/SQLtest.php:36 Stack trace: #0 /home2/xxxxxxxx/xxxxxx/SQLtest.php(36): PDO->__construct('odbc:') #1 {main} thrown in /home2/xxxxxxxx/xxxxxx/SQLtest.php on line 36 mssql_connect的錯誤訊息很單純,就連不上 odbc_connect的錯誤訊息比較豐富點,無法找到lib 而PDO odbc的錯誤訊息,似乎在說Driver不對應 看很多文章都說改用sqlsrv,去微軟下載sqlsrv driver,安裝到PHP資料夾,再改用 sqlsrv就可以成功連線SQL,問題在於虛擬主機沒有這樣操作的空間 在這問題上打轉了兩個多星期,希望版友們能指點魯叔一二,若有其它資訊不足的部分也 望請各位不吝指教,魯叔會儘可能補全供各位參考。 -- 我打江狗 都不帶重擊跟打野刀 改帶虛弱與黃跳錢 起手請隊友幫忙多打 無損上2 但就略慢 農野改去下路跳錢吸經驗發育 這組合雙人線配起來非常棒 最好第一趟回家先出眼石 不是傻破 這江狗 玩起來跟傻破90%位置很像 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.73.158 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1571815668.A.620.html
1F:推 lhsieh: google pdo sqlsrv 10/23 23:37
2F:推 bakedgrass: 你的cpanel沒有終端機給你輸入指令或是安裝extension 10/24 05:16
3F:→ bakedgrass: 的權限嗎 10/24 05:16
坦白說不是很確定,之前想做Cronjob的時候,有問過主機商,主機商是說他們的客戶端不 能對伺服器下command,我剛看了一下Cpanel的版本是82.0 (build 17),控制台如圖: https://i.imgur.com/B4PPCeb.jpg
而且我查到的文章大多都是在本機Windows Server開Apache用PHP去連SQL Server的方式, 在這情況之下可以去下載微軟提供的DRIVER,放置在本機PHP的資料夾下,也是舊版PHP啟 用sqlsrv函式去連SQL Server的方法。但我現在是遠端Linux要去撈遠端SQL資料,而且是 PHP 5.6.4版,要不是想辦法把sqlqrv開出來,要不升級PHP版本到7.0+,前者我不確定做 不做的到,後者的話,之前寫的mysql_query舊函式的所有程式會直接入土。 因為網站還在運作,所以才想說有什麼辦法可以用PHP 5.6內的mssql或odbc去連,再不就 是把之前所有程式跟檔案的mysql_query系列全改成mysqli_query或直接上PDO然後整個網 站升PHP版本直上7.3+....那就有內建sqlsrv可以用了 QQ ※ 編輯: noth (220.136.73.158 臺灣), 10/24/2019 15:30:55
4F:推 powyo: mssql的帳密是否只允許本機存取 10/24 16:14
剛剛從另一台Windows Server去連目標SQL Server,即使用Admin也連不上... 我開始懷疑是不是SQL端設定問題,因為我好像設定完所有遠端開放連線之後還沒重開過伺 服器,現在可能先從SSMS著手處理看看,不過重開Windows伺服器這件事可能要等半夜 有更新我會再來回報,謝謝各位先進的熱心意見 ※ 編輯: noth (220.136.73.158 臺灣), 10/24/2019 16:21:09
5F:推 ri3567: 用phpinfo() 看一下 sqlsrv 或 odbc 有沒裝好? 10/24 16:55
odbc是有啦,sqlsrv我目前查到的範圍,看起來是不用想擴充啦...,我目前是朝odbc去走 看看,真不行再來想別的資料交換的方式
6F:推 bakedgrass: 那就是沒辦法了。因為我的主機商倒是允許這麼做XD 10/25 02:07
有的主機商的Cpanel好像有開放Terminal功能可以對主機下command,我這個確定是沒有啦 ,杯具 ※ 編輯: noth (118.168.194.38 臺灣), 10/28/2019 11:50:43
7F:→ gname: 我是用sqlsrv_connect 11/05 15:58







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP