2017-01-18 16 views
0

EDIT: Это вполне возможно сделать это бесплатно Это все еще требует лицензии, я не уверен, сколько и какие именно требуется лицензия, как у меня был в комплекте с мой установщик.IBM DB2 я доступ из Bitnami WAMP стека

Я пытаюсь подключиться к серверу IBM i DB2 с локального ПК как часть приложения PHP. Я пытаюсь настроиться на местное развитие.

Невозможно найти скачивание для «IBM DB2 Universal Database client» и/или «IBM DB2 Connect», упомянутых ниже. Кто-нибудь сделал это раньше и мог бы дать некоторое представление? Я открыт для альтернативных решений, пока доступны функции db2_ *. Я работаю с существующим кодом без простого/быстрого перехода между типами соединений между разработкой и производством.

Это почти дублированный вопрос, как here, но у этого тоже не было ответа. OP закончил тем, что отказался от «IBM Client Access OLE DB» и подключился к нему с помощью «IBMDA400», но я также не могу найти для него загрузку. Я даже не уверен, что этот метод также включит функции db2_ *.

  • Я использую стек Bitnami WAMP (https://bitnami.com/stack/wamp)
  • Я скачал php_ibm_db2.dll от https://pecl.php.net/package/ibm_db2 и добавил extension=php_ibm_db2.dll в мой файл php.ini.
  • Я подтвердил, что файл php.ini используется для проверки вывода echo phpinfo(); и его успешной модификации.
  • Я также разместил 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 Universal Database client» и «IBM DB2 Connect» должны быть установлены на том же компьютере, на котором запущен PHP here, но у меня есть проблема с поиском загрузки. Я могу найти инструкции по установке каждой, но без ссылки для загрузки.

Я нашел загрузку для «IBM Data Server Client», которая находится за входом на сайт IBM. Мне интересно, если это одна из двух программ, которые мне нужно установить только под другим именем. Я знаю, что согласованность имени не является лучшим атрибутом IBM ...: D

+0

Вопрос вроде вашего, спрашивающий о ссылках на внешние ресурсы, скорее всего, будет закрыт как не по теме, но подумайте об этом: http://www-03.ibm.com/systems/power/software /i/access/windows.html – mustaccio

+0

Спасибо @mustaccio. У меня уже установлен IBM i Access для Windows, но я не думал, что это то, что мне нужно. Я буду читать дальше, хотя и подтвердить. Также спасибо за предупреждение, я отредактировал свой вопрос, чтобы он больше не запрашивал внешние ссылки. –

ответ

1

У меня есть некоторые ответы.

Поддержка JDBC и ODBC бесплатна и обычно поставляется с другим программным обеспечением IBM. Это не помогает в отношении функций db2_ * в PHP. Если ваша база данных DB2 находится в IBM i или даже Z/OS, единственный способ сделать это - с помощью DB2 Connect. Существует несколько разных версий, но для разработки рабочей станции вам понадобится DB2 Connect Enterprise Edition. Недостатком является наименьшее количество пакетов, которые они предлагают в настоящее время, - 25 пользователей на ~ $ 3800.Это составляет примерно 152 долл. США/пользователь, но для небольшого магазина с 2 или 3 разработчиками это, к сожалению, не может быть и речи. В какой-то момент они предложили 5 пакетов лицензий, но на данный момент они больше не предлагают его. Надеюсь, они будут в будущем.

Если база данных DB2 на LUW, то все, что вам нужно, это клиент IBM Data Server, который можно скачать бесплатно здесь (требуется 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 и скопировать все файлы. Будут дальнейшие различия между производством и развитием, но они могут сэкономить.

Лично я считаю абсурдным, что они взимают плату за возможность удаленного подключения к базе данных DB2 на IBM i или Z/OS с использованием метода, отличного от JDBC или ODBC, но ничего не взимающего за LUW. В сочетании с тем, что самый маленький пакет для 25 пользователей делает его еще более обескураживающим для малого и среднего бизнеса (основные клиенты для IBM i).

Я получил эту работу только с «IBM Data Server Client». Сначала я установил стек Wamp с Bitnami, PHP 5.6.30 32bit. Затем я загрузил IBM Data Server Client из области passport advantage. Я не пробовал версию от here после того, как она работала, так что вы тоже можете работать. Эти шаги основаны на версии, полученной от паспортного преимущества. В нем есть мастер установки, поэтому вы можете просто выполнить шаги, но here - это статья IBM об этом процессе. В эту статью включены инструкции по установке другого программного обеспечения в дополнение к IBM Data Server Client, поэтому обратите внимание только на те, которые применяются. После установки вы должны настроить клиента из командной строки окна. Для этого я следовал за статьей this. Подводя итог, вы должны каталогизировать узел (сервер), а затем каталогизировать базу данных. Затем перезапустите сеанс и проверьте его, подключив. Синтаксис ниже:

< + NODENAME +> составлен вами. < + REMOTE +> - полное доменное имя или IP. < + PORT +> - это порт < + REMOTE +>, с которым вы должны подключаться. Обычно порт будет 446. < + имя_базы + + - это имя базы данных.

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 для водителя ibm_db2 от here. Я использовал версию 1.9.9. Затем переместите файл php_ibm_db2.dll в ваш каталог расширения PHP, как указано в директиве extension_dir в вашем php.ini. Затем добавьте эту строку в php.ini extension=php_ibm_db2.dll. Затем перезапустите Apache и вы сможете подключиться. При успешном подключении к БД на данный момент у меня все еще возникают проблемы с неквалифицированными таблицами. Кажется, что вместо имени предоставленной библиотеки используется имя пользователя, несмотря на то, что список библиотек установлен правильно. Я обновлю, когда придумаю эту часть.

Это грубая схема того, что я должен был сделать, чтобы заставить его работать в моей конкретной ситуации и не предназначался для всего охватывающего учебника. Если ваша среда отличается, вам, возможно, придется приспособиться. Кроме того, я не уверен, есть ли какие-либо другие зависимости для php_ibm_db2.dll, которые уже были удовлетворены для меня. Надеюсь, это по крайней мере спасет кого-то время и деньги.

Я решил проблему с библиотечным списком; См. Этот ответ: https://stackoverflow.com/a/43193058/967617