Как указать CLI (свойства драйвера) в соединении PHP PDO?

Вот трудный. Итак, мне удалось подключиться к нашей базе данных IBM DB2, используя метод Windows ODBC DNS и каталогизированное имя. У меня загружен модуль php_pdo_ibm.dll, и он работает при подключении:

$connection = new PDO('ibm:SomeDB2CataloguedDBName');

В каталогизированном имени (например, псевдоним) действительно указано следующее:

db2 update dbm cfg using SSL_CLNT_STASH "C:\somefile.kdb"

db2 update dbm cfg using SSL_CLNT_KEYDB "C:\somefile.kdb"

На экране ODBC эти параметры также указываются на экране дополнительных настроек:

Я знаю, что могу подключиться, используя соединение ODBC, даже если псевдоним DB2 DB не был настроен, поскольку в файле db2cli.ini указаны 3 обязательных параметра SSL.

У меня вопрос: как я могу использовать новый PDO(.....) в PHP, не ссылаясь на псевдоним DB2 или ODBC DNS? Я полагаю, мне понадобится какая-то особая строка подключения? Спасибо.

1 ответ

Решение

Вы можете обратиться к документации, в которой показан пример подключения через псевдоним DSN или через строку подключения с явными свойствами.

Оба метода должны позволить вам успешно установить соединение с SSL, если ваша среда настроена правильно.

Для подключения с помощью строки подключения с явным URL-адресом вам необходимо знать правильное имя драйвера Db2 (которое может отличаться от указанного в документации) - в вашем вопросе не упоминается, какой тип драйвера Db2 вы используете.

На этой странице документации приведен пример URL-адреса подключения:

$db = new PDO( "ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" . "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;UID=testuser;PWD=testpass", "", "");

В зависимости от имени и версии драйвера Db2 вы можете добавить свойства подключения в db2dsdriver.cfg XML (для использования с методом подключения DSN), или вы можете поместить эти свойства в URL-адрес подключения вместе с любыми другими необходимыми свойствами, чтобы подключение работало.

Если вы используете драйвер Db2, выпущенный недавно (новее 2016 года), вы можете получить SSL-соединение от приложений CLI (например, PHP) без необходимости использовать статически созданное хранилище ключей и без необходимости отдельно развертывать IBM GSK8. Это возможно, если у вас есть сертификат экземпляра Db2 (или сервера) в формате файла ARM и вы указываете его полное имя с атрибутом соединения.SSLServerCertificate="c:/path/to/certificate file"; вместе с Security=SSLпри условии, что ваша целевая среда Db2-сервера уже настроена соответствующим образом. За подробностями обращайтесь к Центру знаний Db2 для вашей версии сервера Db2.

Другие вопросы по тегам