php - Laravel SSL 与 MySQL 的连接无法正常工作

标签 php mysql laravel ssl laravel-5

我正在开发一个项目,我必须使用 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
        ),
    ],

有什么想法吗? =)

最佳答案

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

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

请参阅链接:How do I connect to a MySQL database over SSL with Laravel 5.3

关于php - Laravel SSL 与 MySQL 的连接无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52329389/

相关文章:

php - ZF2 : TableGateway ResultSet to JSON

javascript - AJAX 请求 responseText 在 Chrome 中为空?

mysql - 在 WHERE IN 子句中使用自定义 MySQL 函数的结果

php - Laravel View 路由的两个问题

css - Laravel Mix - 公共(public) CSS 不断覆盖

php - 不存在的路由的后备路由

php - 输入字段中的多维数组

mysql 查询在 phpmyadmin 中工作没有错误,但是刷新时不会显示更改

MySQL - 如果 EXISTS 返回 true,外部查询结果不应该不再被过滤吗

mysql - Laravel5 : Eloquent and JOIN