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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel:致命错误:内存字节用尽远程数据库相关的知识,希望对你有一定的参考价值。

我有一个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',
    ),   
],

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

谢谢,

麦克风

答案

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

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

$logger->error(
    $e->getMessage(),
    ['exception' => $e]
);

以上是关于Laravel:致命错误:内存字节用尽远程数据库的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:允许的内存大小为 1610612736 字节用尽 laravel 护照

第二个laravel项目(v5.4)PHP致命错误:允许的内存大小为134217728字节已用尽(试图分配262144字节)

php - 致命错误:允许的内存大小为 134217728 字节已用尽 [重复]

PHP致命错误:允许的内存大小为134217728字节已用尽

致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 71 字节)

使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)