Сценарий, приведенный ниже, выполняется на сервере Centos и пытается подключиться к базе данных MySQL на другом сервере, для которого требуются параметры SSL.Учетные данные, используемые в сценарии, работают нормально при использовании DSN-подключения Microsoft Access.
<?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 PDOException: PDO :: __ construct (): операция SSL не выполнена с кодом 1. OpenSSL Сообщения об ошибках: ошибка: 14090086: процедуры SSL: ssl3_get_server_certificate: сбой проверки сертификата в / var / www / vhosts /zzzzz.org/httpdocs/zzodbc/dgodbc1.php:10 Трассировка стека: # 0 /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php(10): PDO -> __ construct ('mysql: host =99.9 ... ',' odbc_guil ... ',' pwd1 ', Array) # 1 {main} Следующее исключение PDO: SQLSTATE [HY000] [2002] в /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php: 10 Трассировка стека: # 0 /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php(10): PDO -> __ construct ('mysql: host = 99.9 ...', 'odbc_guil... ',' pwd1 ', Array) # 1 {main} добавлено в /var/www/vhosts/zzzzz.org/httpdocs/zzodbc/dgodbc1.php в строке 10
У меня естьпроверено гона учетные данные, в том числе параметры SSL с подключением DSN.Я проверил, что ключи 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-коннектор на сервере, с которым я сейчас работаю.