Как указать CLI (свойства драйвера) в PHP PDO-соединении? - PullRequest
0 голосов
/ 13 февраля 2020

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

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

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

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

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

In на экране ODB C эти параметры также указываются на экране расширенных настроек:

enter image description here

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

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

1 Ответ

1 голос
/ 13 февраля 2020

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

...