Как указать 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.