Проблема при соединении с DB2 из PHP (SQL1092N)

KPD

Новичок
Добрый день.

Помогите пожалуйста разобраться с проблемой при коннекте к DB2 из PHP
Имеется сервер на Windows Server 2012 + IIS + PHP

Коннект делаю собсвенно говоря как и написано в примере: https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.doc/connecting/connect_connecting_php.html

При этом получаю ошибку
Код:
   echo db2_conn_error () . "<br>";
   echo db2_conn_errormsg () . "<br>";

08004
[IBM][CLI Driver] SQL1092N The requested command or operation failed because the user ID does not have the authority to perform the requested command or operation. User ID: "MAINAPPPOOL". SQLCODE=-1092

Что само интересное с этого же сервера под этим же пользователем из под Java всё прекрасно работает с DB2, тоесть проблема с отсуствием прав или неверным именем юзера исключена.

Если в коде PHP меняю логин или пароль на заведомо неверные ошибка не меняется. Что удивляет.
Ошибка кстати не меняется, даже если указать заведомо некорректный хостнейм.

е понимаю, почему коннект всегда идёт как бы под MAINAPPPOOL судя по ошибке
Я же указываю другого пользака...
 

fixxxer

К.О.
Партнер клуба
Нифига себе, DB2!

А зачем так сложно, есть же драйвера для PDO.
 

KPD

Новичок
А что такое PDO? Драйвера то видел, но что это?

А проблему в итоге решил. В настройках IIS надо было в Application Pools -> MainAppPool->Advanced Settings->Identity заменить Application Poolidentity на Network Service и всё заработало :)
 

fixxxer

К.О.
Партнер клуба
А проблему в итоге решил
Ну я так и подумал, что проблема где-то в этой области, но насчет винды и IIS-а я почти совсем не в теме. :)
А что такое PDO? Драйвера то видел, но что это?
Это стандартный database abstraction layer, встроенный в PHP (по абстракцией тут имеется ввиду уровень клиентских API СУБД и протокола, а не SQL - наподобие джавовского JDBC).
Его используют практически все Query Builder / ORM библиотеки для PHP, так что при наличии db2-драйвера можно всеми ими пользоваться из коробки (конечно, есть нюансы синтаксиса DB2, но самые популярные библиотеки типа Doctrine 2 его поддерживают).
Да и даже без сторонних библиотек PDO в использовании намного удобнее, чем низкоуровневые функции: http://phpfaq.ru/pdo (там на примере mysql, но принципиальной разницы нет).
 
Последнее редактирование:
Сверху