PHP 5.6 Oracle外部身份验证和OCI_CRED_EXT存在PDO问题



我想知道如何使用带有PDO OCI的安全外部密码存储(也称为钱包(进行身份验证。

请参阅地下php Oracle手册中的Oracle外部身份验证和OCI_CRED_EXT。和

https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-authentication.html#GUID-803496D2-19C7-4F02-94EC-C13EDD8FB17B(跳至第3.2.9章(

以下适用于oci8:

$conn = oci_connect('/', '', $db, 'UTF8',OCI_CRED_EXT);

注意OCI_CRED_EXT属性!

但是,如何将该选项传递给PDO OCI连接?以下可能很接近,但不起作用:

$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NUM,
'session_mode' => OCI_CRED_EXT,
];
try{
$conn = new PDO("oci:dbname=".$db.';charset=UTF8', "/","", $opt);
}
catch(PDOException $e){
echo ($e->getMessage());
}

有可能吗?非常感谢!

PDO_OCI不可能。与OCI8不同,该实现不会在任何位置设置OCI_RED_EXT。如果您使用的是Oracle Cloud ADB,请注意,钱包现在是可选的。如果您使用Instant Client 19.14或21.5,则可以使用单向("无墙"(TLS,类似于https://towardsdev.com/connect-to-oracle-autonomous-database-from-python-without-using-the-instance-wallet-64bd16e4f31c

最新更新