Laravel SSL-соединение с MySQL не работает

Я работаю над проектом, в котором мне нужно использовать SSL для подключения к базе данных MySQL. Это работает в обычном PHP, но не тогда, когда я пытаюсь использовать Laravel.

Рабочий PHP-код:

<?php
$host = 'xxx';
$db = 'xxx';
$user = 'xxx';
$pass = 'xxx';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
    PDO::MYSQL_ATTR_SSL_CA => "../rootCA.pem",
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

$data = $pdo->query('SELECT * FROM x LIMIT 100')->fetchAll(PDO::FETCH_ASSOC);
var_export($data);

Но когда я пытаюсь подключиться через Laravel, я получаю следующую ошибку:

C:\*\*\vendor\laravel\framework\src\Illuminate\Database\Connection.php on line 330
[Fri Sep 14 11:35:05 2018] ::1:54869 [500]: /data - Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in C:\*\*\vendor\laravel\framework\src\Illuminate\Database\Connection.php on line 330

Конфигурация моего Laravel (5.7) для подключения:

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'xxx'),
        'port' => env('DB_PORT', 'xxx'),
        'database' => env('DB_DATABASE', 'xxx'),
        'username' => env('DB_USERNAME', 'xxx'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
        'options' => array(
            PDO::MYSQL_ATTR_SSL_CA  => '../rootCA.pem',
            PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
        ),
    ],

Любые идеи? знак равно

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
1 390
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам необходимо указать полный путь к файлам.

'options' => [
    PDO::MYSQL_ATTR_SSL_KEY => base_path('ssl/client-key.pem'),
    PDO::MYSQL_ATTR_SSL_CERT => base_path('ssl/client-cert.pem'),
    PDO::MYSQL_ATTR_SSL_CA => base_path('ssl/ca-cert.pem')
]

См. Ссылку: Как подключиться к базе данных MySQL через SSL с Laravel 5.3

Спасибо за ответ, я тоже пробовал это, к сожалению, с тем же результатом.

Tibbelit 14.09.2018 13:13

Привет @Tibbelit! Пожалуйста, измените memory_limit в php.ini. Нравиться ; Старый предел; memory_limit = 512M; Новый предел memory_limit = 2048M

Yagnesh Makwana 14.09.2018 13:37

Также пытался изменить его на «-1», не помогло: / VirtualAlloc () не удалось: [0x00000008] Недостаточно памяти для обработки этой команды. Ошибка VirtualFree (): [0x000001e7] Попытка получить доступ к недопустимому адресу. Ошибка VirtualAlloc (): [0x00000008] Недостаточно памяти для обработки этой команды. [Пт, 14 сентября, 13:49:08 2018] :: 1: 57501 [500]: / data - Недостаточно памяти (выделено 838860800) (попытка выделить 4096 байт) в C: \ Projects * \ vendor \ laravel \ framework \ src \ Illuminate \ Databas‌ e \ Connection.php в строке 330

Tibbelit 14.09.2018 13:50
Ответ принят как подходящий

Проблема заключалась не в самом подключении. Дело в том, что я пытался получить много строк из моего SQL-запроса, который (действительно странно) выдавал мне сообщения об ошибках, например:

SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL routines:ssl3_get_record:wrong version number

и т.д. Так что у меня плохо - но я надеялся, что сообщения об ошибках могли быть лучше.

Другие вопросы по теме