Second laravel project(v5.4) PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes)

Second laravel project(v5.4) PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes)

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

我对项目使用 xampp。

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

artisan serve

phpstorm 告诉我

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in E:\xampp\htdocs*****\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 549

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in E:\xampp\htdocs*****\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 549

Process finished with exit code 255 at 13:58:28. Execution time: 4,976 ms.

我试过 other post 关于这个,并试图改变 php.ini。它不适用于我的情况。

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

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

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

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

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

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

我推荐两件事

  1. 检查您的 php.ini 以确认您的内存限制 (memory_limit = ?)
  2. 提供完整的堆栈跟踪,以便我们可以帮助您诊断(我猜容器正在尝试从数据库加载模型,并且数据量很大,加载时,它会超限稳定)

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

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

  1. 根指向 /public 文件夹
  2. 运行 作曲家安装。您可能缺少一些供应商文件夹
  3. /storage 的权限为 777/storage/logs/laravel.log <- 在这里你会发现你真正的错误。
  4. 确保创建 .env 也就是 .env.example
  5. 的副本
  6. 生成密钥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','')
],

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

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