如何在 PHP PDO 连接中指定 CLI(驱动程序属性)?
How to specify the CLI (driver properties) in a PHP PDO connection?
这是一个艰难的过程。因此,我设法使用 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 屏幕中,这些参数也在高级设置屏幕中指定:
我知道我可以使用 ODBC 连接进行连接,即使尚未设置 DB2 数据库别名,因为在 db2cli.ini 文件中指定了 3 个必需的 SSL 参数。
我的问题是,如何在不引用 DB2 别名或 ODBC DNS 的情况下使用 PHP 中的新 PDO(.....)?我希望我需要某种特殊的连接字符串?谢谢
您可以参考 documentation,它显示了通过 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 以及使连接正常工作所需的任何其他属性。
如果您使用的是最新的(比 2016 年更新的)Db2 驱动程序,那么您可以从 CLI 应用程序(如 PHP)获得 SSL 连接,而无需使用静态创建的密钥库,也不需要单独部署 IBM GSK8。如果您拥有 ARM 文件格式的 Db2 实例(或服务器)证书并且您提供其完全限定名称以及连接属性 SSLServerCertificate="c:/path/to/certificate file";
和 Security=SSL
,则这是可能的,假设您的目标 Db2 服务器环境已经适当配置。有关详细信息,请参阅适用于您的 Db2 服务器版本的 Db2 知识中心。
这是一个艰难的过程。因此,我设法使用 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 屏幕中,这些参数也在高级设置屏幕中指定:
我知道我可以使用 ODBC 连接进行连接,即使尚未设置 DB2 数据库别名,因为在 db2cli.ini 文件中指定了 3 个必需的 SSL 参数。
我的问题是,如何在不引用 DB2 别名或 ODBC DNS 的情况下使用 PHP 中的新 PDO(.....)?我希望我需要某种特殊的连接字符串?谢谢
您可以参考 documentation,它显示了通过 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 以及使连接正常工作所需的任何其他属性。
如果您使用的是最新的(比 2016 年更新的)Db2 驱动程序,那么您可以从 CLI 应用程序(如 PHP)获得 SSL 连接,而无需使用静态创建的密钥库,也不需要单独部署 IBM GSK8。如果您拥有 ARM 文件格式的 Db2 实例(或服务器)证书并且您提供其完全限定名称以及连接属性 SSLServerCertificate="c:/path/to/certificate file";
和 Security=SSL
,则这是可能的,假设您的目标 Db2 服务器环境已经适当配置。有关详细信息,请参阅适用于您的 Db2 服务器版本的 Db2 知识中心。