下面的脚本运行在Centos服务器上,并试图连接到另一台服务器上的MySQL数据库,该服务器需要SSL参数。脚本中使用的凭据可以很好地使用和Microsoft连接。
<?php
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);
$pdo = new PDO('mysql:host=99.99.199.199;dbname=dummy1', 'user1', 'pwd1',
array(
PDO::MYSQL_ATTR_SSL_KEY =>'/etc/mysql/ssl/ck.pem',
PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/cc.pem',
PDO::MYSQL_ATTR_SSL_CA =>'/etc/mysql/ssl/c1.pem'
));
$statement = $pdo->query("SHOW TABLES;");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
?>
上面的代码给出了SSL操作失败的代码1 -以下是完整的消息:
致命错误: Uncaught : PDO::__construct():SSL操作与代码1一起失败。OpenSSL错误消息:错误:14090086:SSL /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php:10验证在/var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php:10堆栈跟踪中失败:#0 /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php(10):PDO->_/var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php(10):_/var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php(10):=99.9.,‘odbc_guil.’,‘pwd1 1’,数组) #1 {main} /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php:10堆栈跟踪中的SQLSTATEHY000:#0 /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php(10):PDO->_ /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php (‘mysql:host=99.9.’,‘odbc_guil.’,‘pwd1 1’,/var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php中的#1 {main}
我已经验证了凭证,包括带有DSN连接的SSL参数。我检查了SSL密钥是否正确地位于/etc/mysql/ssl目录中。
任何帮助我做错事都会很好。谢谢。
--我可能用错了.,因为这些键与ODBC一起工作,所以我认为我应该使用odbc_connect并发送与MS相同的字符串,例如
$user = "user";
$pass = "pwd";
$connection = "Driver={MySQL ODBC 5.1 Driver};Server=46.51.178.163;Database=db1;sslca=/etc/mysql/ssl/c1.pem;sslkey=/etc/mysql/ssl/ck.pem;sslcapath=/etc/mysql/ssl/;sslcert=/etc/mysql/ssl/cc.pem";
$con = odbc_connect($connection, $user, $pass);
但是要想让它工作起来,我需要在服务器上安装一个MySQL连接器,我目前正在努力解决这个问题。
发布于 2019-03-16 08:46:18
我已经为所有帮助过的人解决了这个问题,-thanks。这就是我学到的:
下面是工作的代码(连接字符串与Microsoft连接中使用的字符串完全相同):
<?php
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);
$user = "odbcmmm";
$pass = "999999999";
$connection = "Driver={mysql537};Server=99.99.199.199;Database=db_name;UID=odbc_db_name;PWD=password;sslca=/etc/mysql/ssl/c1.pem;sslkey=/etc/mysql/ssl/ck.pem;sslcapath=/etc/mysql/ssl/;sslcert=/etc/mysql/ssl/cc.pem";
$con = odbc_connect($connection, $user, $pass);
$sql="SELECT Id from stk_item";
$rs=odbc_exec($con,$sql);
if (!$rs) {
exit("Error in SQL");
}
我希望这是有用的。
https://stackoverflow.com/questions/54891029
复制相似问题