Вот пример тестируемого кода:
Код: Выделить всё
$dbh = new PDO('mysql:host=remote.host;dbname=db;sslmode=require',
'user', 'pw', [PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => False]);
$res = $dbh->query('select * from test_table');
Я видел на различных форумах более старые примеры, демонстрирующие явное наименование характеристик SSL, таких как CA или открытый ключ, — но я также см. примечания в документации MySQL, в которых указано, что более последняя версия MySQL (я думаю, позже 8.0.10, но определенно до 8.0.35, которую мы используем) - поэтому я не считаю, что мне нужно предоставлять более подробную информацию о шифровании, и у меня нет подробностей о сертификаты или ключи сервера MySQL.
Я пробовал несколько вариантов строки подключения: «sslMode=require», «sslmode=REQUIRED» и другие попытки, следуя всем моделям, которые я мог найти. в документации и статьях MySQL и PHP - никакой радости.
На той же виртуальной машине код PHP не работает, я могу успешно установить соединение через mysql cli, просто добавив опцию --ssl к его вызову. И у MySQL Workbench нет проблем с подключением к экземпляру базы данных.
Поэтому я в тупике и буду признателен за любую помощь.
Версия PHP: 8.0
Использование библиотеки PHP mysqlnd
Пример сообщения об ошибке: «Неустранимая ошибка PHP: Uncaught PDOException: SQLSTATE[HY000] [3159] Соединения, использующие небезопасный транспорт, являются запрещено, пока --require_secure_transport=ON"
Подробнее здесь: https://stackoverflow.com/questions/793 ... sql-8-0-10
Мобильная версия