第二个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 name
好DB_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()
无法执行 php artisan 命令 [php 致命错误 [
PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长,