簡體   English   中英

Laravel與MySQL的SSL連接無法正常工作

[英]Laravel SSL connection to MySQL not working

我正在開發一個項目,我必須使用SSL連接到MySQL數據庫。 這是在vanilla 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
        ),
    ],

有任何想法嗎? =)

您需要提供完整的文件路徑。

'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')
]

請參閱鏈接: 如何使用Laravel 5.3通過SSL連接到MySQL數據庫

問題不在於它本身的連接。 是我嘗試從我的SQL查詢中獲取多行(真的很奇怪)給了我錯誤消息,如:

SSL操作失敗,代碼為1. OpenSSL錯誤消息:錯誤:1408F10B:SSL例程:ssl3_get_record:版本號錯誤

所以我的壞 - 但我希望錯誤信息本來可以更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM