ssl - 如何在 PHP PDO 连接中指定 CLI(驱动程序属性)?
问题描述
这是一个艰难的。因此,我设法使用 Windows ODBC DNS 方法并通过编目名称连接到我们的 IBM DB2 数据库。我加载了 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 屏幕中,这些参数也在高级设置屏幕中指定:
我知道即使没有设置 DB2 DB 别名,我也可以使用 ODBC 连接进行连接,因为在 db2cli.ini 文件中指定了 3 个必需的 SSL 参数。
我的问题是,如何在不引用 DB2 别名或 ODBC DNS 的情况下在 PHP 中使用新的 PDO(.....)?我希望我需要某种特殊的连接字符串?谢谢。
解决方案
您可以参考文档,其中显示了通过 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 年更新),那么您可以从 CLI 应用程序(如 PHP)获得 SSL 连接,而无需使用静态创建的密钥库,也无需单独部署 IBM GSK8。如果您拥有 ARM 文件格式的 Db2-instance(或服务器)证书,并且您提供了带有连接属性的完全限定名称以及 ,则这是可能的SSLServerCertificate="c:/path/to/certificate file";
,Security=SSL
假设您的目标 Db2-server 环境已经适当配置。有关详细信息,请参阅适用于您的 Db2 服务器版本的 Db2 知识中心。
推荐阅读
- android - 手机静音时如何不播放声音?
- c# - 异步函数同步运行而不是异步
- javascript - 从获取响应 Javascript/Nodejs 创建缓冲区对象
- php - 有没有办法列出所有在某个类别中发布视频的作者并一起显示,比如列表?
- python - 将.txt文件读入字典python
- python - 我无法流式传输直接 mp4 文件(错误 400,错误请求),但我可以使用带有正确标头的 python 请求下载相同的文件?
- sql - 如何从不同的表中删除行?
- groovy - 如何使用 jmeter 5.0 发送像 telnet 这样的 json 正文
- javascript - Babel 不预处理文件
- python - AssertionError:管理器项目的数量必须等于块项目的联合#管理器项目:6004,#tot_items:6005