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

Posted

技术标签:

【中文标题】第二个laravel项目(v5.4)PHP致命错误:允许的内存大小为134217728字节已用尽(试图分配262144字节)【英文标题】:Second laravel project(v5.4) PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) 【发布时间】:2017-08-05 07:14:31 【问题描述】:

这是我在同一台机器上运行的第二个 laravel 项目。第一个工作得很好。

我在项目中使用 xampp。

在我安装另一个全新版本(5.4)laravel 后,当我运行时

工匠服务

phpstorm 告诉我

PHP 致命错误:E:\xampp\htdocs*****\vendor\laravel\framework\src\Illuminate\Container\Container.php 中允许的内存大小为 134217728 字节已用尽(试图分配 262144 字节)第 549 行

致命错误:允许的内存大小为 134217728 字节已用尽(已尝试 分配 262144 字节)在 E:\xampp\htdocs*****\vendor\laravel\framework\src\Illuminate\Container\Container.php 第 549 行

进程在 13:58:28 以退出代码 255 结束。 执行时间:4,976 毫秒。

我尝试过other post,并尝试更改 php.ini。它不适用于我的情况。

【问题讨论】:

在网络浏览器中运行是否会产生同样的错误? 【参考方案1】:

您的代码中一定有某种错误 - 例如循环引用或其他错误。调用 php artisan serve 当然不应该使用 130+ MB 内存。

修复错误并重试... php artisan serve 应该使用最大 20mb 的空间?

如果您真的想运行代码,请尝试php -d memory_limit=500M artisan serve,这将增加该特定进程的 php 可用内存。

【讨论】:

感谢您的努力。但是,就像我说的那样,我确实尝试增加 php.ini 文件中的 memory_limit,这在我的情况下不起作用。【参考方案2】:

你能多解释一下你的项目是关于什么的吗?

我问是因为该错误与单个 PHP 脚本试图在内存中加载的内容直接相关,即:加载模型或文件,并且生成的对象将使用超过 @987654321 下每个脚本允许的内存@配置。

查看错误,您的 php.ini 设置为最大脚本内存使用量为 128Mb(134217728 字节/1024 Kb /1024 Mb),并且正在加载的任何内容都试图加载额外的 256Kb。

我推荐两件事

    检查您的 php.ini 以确认您的内存限制 (memory_limit = ?) 提供完整的堆栈跟踪,以便我们帮助您诊断(我猜容器正在尝试从 DB 加载模型,并且数据大小非常大,加载时超过了已建立的限制)

【讨论】:

该项目是我刚从 laravel 服务器下载的干净 laravel。就像我说的,我试图更改 php.ini 中的 memory_limit 但它不起作用。此外,我发布的所有内容都是完整的堆栈跟踪。是的,没有别的了。 当我想到其他选择时,我还有另一个问题。如果将内存限制设置为 256Mb,在重新启动 Apache 后,是否会抛出相同的错误(相同的字节数)? (如果是这样,那么您正在修改的 php.ini 不是应用程序读取的那个)(这可能是 XAMPP 配置方式的副作用)跨度> 【参考方案3】:

这听起来不像是服务器设置问题。这是一个 Laravel 设置问题。在 php.ini 中增加 memory_limit 不会解决您的问题。如果设置不正确,Laravel 通常会抛出无用的错误。

运行 composer 后,请确保在尝试运行 php artisan serve 之前已完成以下操作。

    根目录指向/public文件夹 运行作曲家安装。您可能缺少一些供应商文件夹 /storage 的权限是777/storage/logs/laravel.log 确保创建.env 也就是.env.example 的副本 生成密钥php artisan key:generate

还要注意,在 .env 文件中创建变量时不要有任何空格,这也会导致问题。

坏了DB_DATABASE=my database nameDB_DATABASE=my_database_name

最后,如果您正在运行 MAMP 之类的东西,您可能必须在 .env 文件中包含一个 UNIX_SOCKET 变量,如下所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name_here
DB_USERNAME=root
DB_PASSWORD=root
UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

并在 /config/database.php 文件中创建变量

'mysql' => [
    'driver' => 'mysql',
    ...
    'engine' => null,
    'unix_socket'   => env('UNIX_SOCKET','')
],

【讨论】:

谢谢@user3029357。你得到了正确的方向。主机设置似乎有问题。 目前有人反对投票,请解释一下?我相信这是因为他们认为这是一个服务器设置问题。这是一个 Laravel 问题。在 php.ini 中增加 memory_limit 不会解决此问题。这是 Laravel 设置不正确时引发的常见错误。 感谢@BlueYama 我试图投票,但系统告诉我我没有足够的声誉。【参考方案4】:

您可能需要检查您的 Laravel 配置,并确保所有配置文件(在 config/ 目录中)都是有效的 PHP。

当我的 config/app.php 文件在两个数组项之间缺少“,”时,我遇到了这个问题。

【讨论】:

以上是关于第二个laravel项目(v5.4)PHP致命错误:允许的内存大小为134217728字节已用尽(试图分配262144字节)的主要内容,如果未能解决你的问题,请参考以下文章

运行 php artisan serve 命令时,laravel 无法打开流致命错误

Laravel 4:PHP 致命错误:调用未定义的方法 Blueprint::int()

安装Laravel收银员的PHP致命内存错误[重复]

无法执行 php artisan 命令 [php 致命错误 [

PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长,

Laravel - PHP 致命错误:在迁移中找不到类“CreateMatchesTable”:刷新