Symfony:PHP 致命错误:允许的内存大小

问题描述 投票:0回答:7

我尝试运行此命令在我的 symfony 项目(1.4)中构建模型:

php symfony propel:build-model( or all ) 

我有这个错误:

PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 20 bytes) in /home/sfprojects/jobeet/lib/vendor/symfony/lib/util/sfClassManipulator.class.php on line 176

我在询问这里的人之前进行了搜索,所以我将 php.ini 中的

memory_limit = 64M
更改为
128M , 510M , 1024M ...
但我遇到了同样的错误,这真的让我抓狂!

我正在使用 Ubuntu 和 apache2、php5...

symfony1 symfony-1.4
7个回答
6
投票

确保您为 php-cli 而不是 Apache 编辑了

php.ini
文件。 在
/etc/php5/cli/php.ini
适用于您的 Ubuntu。


0
投票

编辑:抱歉,这是对如何增加 Symfony 中允许的内存大小?(我同时打开了两者。)

您的composer.json 中可能有类似的内容:

"scripts": {
    "auto-scripts": {
        "cache:clear": "symfony-cmd",

替换为

"scripts": {
    "auto-scripts": {
        "php -dmemory_limit=512M bin/console cache:clear": "script",

0
投票

您应该避免将转储放入循环中

控制器

或者在你的树枝模板中使用

{% for row in rows %}
   {{ dump(row) }}
{% endfor %}

0
投票

我在此处添加此注释是因为这是搜索词弹出的第二页“Php symfony:致命错误允许耗尽 xx 字节的内存大小”

我最近遇到了这个问题

Symfony 6.3.7
。我花了几天时间才解决,因为我在互联网上找不到可以提供帮助的正确资源。

一般来说,增加

memory_limit
并不是最好的解决方案(顺便说一句,我将我的设置为 -1 并增加了 max_x_time,但什么也没有)。您需要进行调查才能找到问题的根本原因。

对我来说,

$kernel->handle($request)
;在 public/index.php 中无法终止其执行或抛出错误,因此 CLI 和浏览器中都没有 symfony 转储/日志,我只是从浏览器中得到了
HTTP ERROR 500
。我一直遵循 $kernel->handle 函数,直到供应商中出现一堆转储,然后使用
PhpDumper.php
。 事实证明,有一个
git diff
尚未被
circular reference exception
检测到/控制,我不知道为什么。我尝试使用 Symfony 5.4、Symfony 6.3.8 重现相同的错误,并且已得到正确处理。
最后,多亏了 git diff,我删除了导致无限递归的依赖注入,现在一切都运行顺利,只需 

ServiceCircularReferenceException

我的案例的代码示例(

128M of memory

上的所有项目):

Service2 调用 Service1。

debug mode

Service1 调用Service2

<?php namespace App\MyModule\Service; use App\Service\XService\Service1; class Service2 { public function __construct(private Service1 $service1) { } }



-1
投票

<?php namespace App\Service\XService; use App\MyModule\Service\Service2; class Service1 { public function __construct(private Service2 $service2) { } }

注意 Bruno-P 已经告诉你的内容,确保你已经为你的 symfony 项目更改了正确的 php.ini 文件。如果您安装了多个 php,则您可能正在更改旧文件。

确保您在 php.ini 中输入正确:

Symfony 1.4:PHP 致命错误:允许的内存大小 33554432 字节已耗尽

清除symfony缓存(symfony cc),关闭Web服务器并再次执行命令:

php_value memory_limit 1024M

您还可以检查您的 php 配置是否设置了内存值限制。在您的项目中创建一个包含以下内容的新文件:

symfony propel:build-model



-1
投票

symfony 作曲家更新

symfonycomposer = 运行 Composer,没有内存限制


-3
投票

<?php phpinfo(); ?>

在 ./symfony 文件的顶部。

© www.soinside.com 2019 - 2024. All rights reserved.