Laravel:致命错误:内存字节用尽远程数据库

问题描述 投票:1回答:1

我有一个Laravel(5.5)Web应用程序,我正在尝试连接远程数据库。我正在使用Apache,PHP 7.0和MySQL。 Laravel使用PDO,当使用远程数据库信息调用类时,我得到500服务器错误:

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php on line 67

几点说明:

  • 在本地使用相同的数据库时,应用程序加载没有问题
  • 我可以使用Sequel Pro连接到远程数据库
  • 我也可以从Laravel服务器的命令行连接到远程数据库(以root身份)
  • 我已将PHP memory_limit设置为-1

这是我的配置文件(.env中的相同信息):

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'xxx.xxx.xxx.xxx'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'xxxxxx'),
    'username' => env('DB_USERNAME', 'xxxxxx'),
    'password' => env('DB_PASSWORD', 'xxxxxx'),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'strict' => false,
    'engine' => null,
    'sslmode' => env('DB_SSLMODE', 'prefer'),
    'options' => array(
        PDO::MYSQL_ATTR_SSL_KEY => '/var/lib/mysql/client-key.pem',
        PDO::MYSQL_ATTR_SSL_CERT => '/var/lib/mysql/client-cert.pem',
        PDO::MYSQL_ATTR_SSL_CA => '/var/lib/mysql/ca.pem',
    ),   
],

如果有人有任何想法或建议,那将是惊人的。

谢谢,

麦克风

php mysql laravel pdo
1个回答
1
投票

我在larachat的人们的恩典中想出来了。问题在于异常处理程序。 context()函数尝试获取用于错误报告的用户数据。然后,处理程序将尝试查询数据库,然后报告错误,然后尝试获取用户信息,从而导致无限循环。

临时解决方法是修改/Foundation/Exception/Handler.php中的report()函数:

$logger->error(
    $e->getMessage(),
    ['exception' => $e]
);
© www.soinside.com 2019 - 2024. All rights reserved.