Php 到MySQL的Laravel SSL连接不工作

Php 到MySQL的Laravel SSL连接不工作,php,mysql,laravel,ssl,laravel-5,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 =&

我正在做一个项目,我必须使用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);
连接的My 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')
]

请参阅链接:

问题不在于it本身的连接。我试图从SQL查询中提取许多行(非常奇怪),这给了我错误消息,如:

SSL操作失败,代码为1。OpenSSL错误消息:错误:1408F10B:SSL例程:ssl3\u获取\u记录:错误的版本号


等等。所以我的不好-但我希望错误消息可以更好。

谢谢你的回答,我也尝试过,不幸的是结果相同。Hello@Tibbelit,请更改php.ini中的内存限制。喜欢旧极限;内存限制=512M;New Limit memory_Limit=2048M也尝试将其更改为“-1”,但没有帮助:/VirtualAlloc()失败:[0x00000008]没有足够的存储空间来处理此命令。VirtualFree()尝试访问无效地址失败:[0x000001e7]。VirtualAlloc()失败:[0x00000008]存储空间不足,无法处理此命令。[Fri Sep 14 13:49:08 2018]::1:57501[500]:/data-在330行的C:\Projects*\vendor\laravel\framework\src\illumb\Database\Connection.php中内存不足(分配838860800)(试图分配4096字节)
'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')
]