2017-01-18 65 views
0

編輯: 這是完全有可能做到這一點免費這仍然需要許可證,我不知道有多少或到底哪個許可證需要作爲礦用捆綁我的安裝程序。IBM DB2我從Bitnami WAMP棧接入

我試圖從本地PC連接到IBM i DB2服務器,作爲PHP應用程序的一部分。我正在努力爲本地發展而努力。

我找不到下面提到的「IBM DB2通用數據庫客戶端」和/或「IBM DB2 Connect」的下載。有沒有人做過這件事,並可以借鑑一些見解?只要db2_ *函數可用,我就開放給備用解決方案。我正在使用現有的代碼,沒有簡單/快捷的方式在開發和生產之間切換連接類型。

這是一個近乎重複的問題,如here但這也沒有答案。 OP最終放棄並使用「IBMDA400」與「IBM客戶端訪問OLE DB」連接,但我也無法找到它的下載。我甚至不確定這種方法是否也會啓用db2_ *函數。

  • 我使用
  • 我從 https://pecl.php.net/package/ibm_db2下載php_ibm_db2.dll並添加 extension=php_ibm_db2.dll到我的php.ini文件Bitnami WAMP棧(https://bitnami.com/stack/wamp)。
  • 我已經通過檢查 輸出echo phpinfo();併成功修改它來確認php.ini文件是正在使用的文件。
  • 我還將php_ibm_db2.dll放置在 extension_dir指令指定的位置。 extension_dir = "C:\Bitnami\wampstack-5.6.29-1\php\ext"

我看到的唯一PHP錯誤記錄是當我啓動服務器(它仍然成功 - 雖然沒有db2_ *函數)。

[18-Jan-2017 21:08:18 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Bitnami\wampstack-5.6.29-1\php\ext\php_ibm_db2.dll' - The specified module could not be found. 

in Unknown on line 0 

[18-Jan-2017 21:08:19 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Bitnami\wampstack-5.6.29-1\php\ext\php_ibm_db2.dll' - The specified module could not be found. 

in Unknown on line 0 

但文件C:\Bitnami\wampstack-5.6.29-1\php\ext\php_ibm_db2.dll確實存在,並且具有完全相同的權限爲目錄中的所有其他* .dll文件(它沒有被修改,因爲在安裝WAMP棧)。

我讀過「IBM DB2通用數據庫客戶端」和「IBM DB2 Connect」必須安裝在運行PHP here的同一臺計算機上,但是無法找到下載。我可以找到關於如何安裝每個的說明,但沒有下載鏈接。

我找到了一個下載「IBM數據服務器客戶」,這是在IBM的網站日誌後面。我想知道這是否是我需要以不同名稱安裝的兩個程序之一。我知道名稱一致性不是IBM的最佳屬性...:D

+0

問題像你這樣的,問鏈接到外部資源,很可能會被關閉作爲題外話,但考慮:http://www-03.ibm.com/systems/power/software /i/access/windows.html – mustaccio

+0

謝謝@mustaccio。我已經安裝了IBM i Access for Windows,但我不認爲這是我所需要的。但我會更多地閱讀它以確認。也感謝你的警告,我編輯了我的問題,所以它不再要求外部鏈接。 –

回答

1

我有一些答案。

JDBC和ODBC支持是免費的,它通常與其他IBM軟件一起提供。這對PHP中的db2_ *函數沒有幫助。 如果您的DB2數據庫位於IBM i甚至Z/OS上,那麼唯一的方法就是使用DB2 Connect。有幾個不同的版本,但對於工作站開發,您需要DB2 Connect企業版。缺點是他們目前提供的最小數量的套餐是25個用戶,價格約爲3,800美元。這個價格大約爲152美元/用戶,但對於只有2或3個開發商的小商店來說,這是不幸的。他們確實提供了5個許可證包,但截至目前他們不再提供。希望他們會在未來。

如果DB2數據庫在LUW那麼所有你需要的是一個可以從這裏免費下載IBM數據服務器客戶機(需要IBM帳戶雖然): https://www-01.ibm.com/marketing/iwm/iwm/web/reg/pick.do?source=swg-idsc97&lang=en_US

一個潛在的替代方法是從服務的API IBM i在開發除API以外的應用程序期間由本地工作站使用。然而,API本身的開發仍然只能在系統AFAIK上完成。您也可以設置本地DB2數據庫,並複製任何文件。生產和發展之間會有進一步的差異,但可以節省一些資金。

就我個人而言,我認爲他們使用JDBC或ODBC以外的方法遠程連接到IBM i或Z/OS上的DB2數據庫,但對LUW收取任何費用是非常荒謬的。再加上25個用戶的最小組件對於中小型企業(IBM i的主要客戶)而言更令人沮喪。

我只是用「IBM Data Server Client」工作。首先,我從Bitnami,PHP 5.6.30 32bit安裝了一個Wamp堆棧。然後我從passport advantage區域下載了IBM Data Server Client。在嘗試使用here之後,我還沒有試過這個版本,所以也可以使用它。這些步驟基於我從護照優勢中獲得的版本。它有一個安裝嚮導,因此您可以按照步驟操作,但here是關於該過程的IBM文章。該文章除了包含IBM數據服務器客戶端之外,還包括其他軟件的安裝指導,因此只需注意適用的其他軟件。安裝後,您必須從窗口的命令提示符配置客戶端。爲此我跟着this文章。總而言之,您必須對節點(服務器)進行編目,然後對數據庫進行編目。然後重新啓動會話並通過連接進行測試。語法如下:

< + NODENAME +>由您組成。 < + REMOTE +>是FQDN或IP。 < + PORT +>是你應該連接的端口< + REMOTE +>。通常該端口將是446. < + database_name +>是數據庫名稱。

db2 catalog tcpip node <NODENAME> remote <REMOTE> server <PORT> 

db2 catalog database <database_name> at node <NODENAME> 

Db2 terminate 

db2 connect to <database_name> user <user_name> (you will then be prompted for a password) 

一旦完成,你必須獲得Windows PHP DDL從here的IBM_DB2驅動程序。我使用了1.9.9版本。然後將php_ibm_db2.dll文件移動到您的php.ini中extension_dir指令中指定的PHP擴展目錄。然後將此行添加到您的php.ini extension=php_ibm_db2.dll。然後重新啓動Apache,你應該能夠連接。在成功連接到數據庫的同時,我仍然在使用不合格的表格時遇到問題。儘管庫列表設置正確,它似乎使用用戶名而不是提供的庫列表。我會在更新這部分時更新。

這是我必須做的一個粗略的概述,以讓它在我的特定情況下工作,而不是打算成爲一個包羅萬象的教程。如果你的環境不同,你可能需要調整。此外,我不確定是否有任何其他的php_ibm_db2.dll依賴關係發生在我身上。希望這至少能爲別人節省一些時間和金錢。

我解決了庫列表中的問題;看到這個答案:https://stackoverflow.com/a/43193058/967617