symfony 内存不足错误
Out of memory error in symfony
我目前正在开发 Symfony 项目 (const VERSION ='2.5.10'),我正在使用 xampp。 PHP 版本是 5.5.19.
我的问题是每次我 运行 我的开发环境都会出错 :
OutOfMemoryException: Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 3358976 bytes) in C:\xampp\htdocs\Editracker\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Profiler\FileProfilerStorage.php line 153
每次我刷新页面时,它都会提供不同的内存大小。我也认为这也是为什么我的开发环境在刷新页面之前需要很长时间的原因。
感谢您的帮助。
php.ini
memory_limit= '256M'
我试图增加我的内存限制,但它仍然给出关于内存限制的错误
Symfony 中最急切的组件是分析器。如果您在某些特定操作中不需要探查器,您可以通过代码禁用它:
if ($this->container->has('profiler'))
{
$this->container->get('profiler')->disable();
}
您也可以在配置中设置全局参数:
framework:
profiler:
collect: false
您要么禁用 symfony 分析器(据我所知,我认为这不是您想要的),要么在 php.ini 中使用 -1
将限制设置为无限制,然后重新启动 apache。
memory_limit = -1
如果仅在 Symfony 开发环境下才达到内存限制,我建议将以下内容添加到 web/app_dev.php
ini_set('memory_limit', '-1');
这样您就可以使用合理的内存量继续测试产品。通过 php.ini 修改整个环境可能会隐藏错误。
我通过安装 XDebug 解决了 Twig 调试中的内存不足错误。
因为 Twig 内部使用 PHP var_dump
函数,所以安装 XDebug 是个好主意,因为它将数组和对象的 var_dump()
输出限制在 3 层深,正如我们在 documentation.
上看到的
感谢 @peezi。
甚至晚了,最近我遇到了关于 Out of Memory
使用 Symfony 3.4 访问 app.php 文件的问题。原来当你把SELinux设置成enforcing
时,即使你把你项目里面的var
目录的权限设置成777,它也无法写入。如果您按照官方文档中有关如何在生产中部署的步骤进行操作,它将 return 响应代码 500 并仅在 Web 服务器的错误日志中写入 PHP 已耗尽内存限制。
我不是 SELinux 专家,但我能解决这个问题的唯一方法是禁用 SELinux,但版本 /etc/selinux/config
文件设置 SELINUX=disabled
并重新启动 OS。
同样,SELinux 存在是有原因的,使用 Symfony 的 var
子文件夹不容易找到正确的配置,如果不考虑禁用 SELinux 就很难解决这个问题。
这可能有帮助:
php -d memory_limit=-1 /usr/local/bin/composer require ggergo/sqlindexhintbundle
我目前正在开发 Symfony 项目 (const VERSION ='2.5.10'),我正在使用 xampp。 PHP 版本是 5.5.19.
我的问题是每次我 运行 我的开发环境都会出错 :
OutOfMemoryException: Error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 3358976 bytes) in C:\xampp\htdocs\Editracker\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Profiler\FileProfilerStorage.php line 153
每次我刷新页面时,它都会提供不同的内存大小。我也认为这也是为什么我的开发环境在刷新页面之前需要很长时间的原因。
感谢您的帮助。
php.ini
memory_limit= '256M'
我试图增加我的内存限制,但它仍然给出关于内存限制的错误
Symfony 中最急切的组件是分析器。如果您在某些特定操作中不需要探查器,您可以通过代码禁用它:
if ($this->container->has('profiler'))
{
$this->container->get('profiler')->disable();
}
您也可以在配置中设置全局参数:
framework:
profiler:
collect: false
您要么禁用 symfony 分析器(据我所知,我认为这不是您想要的),要么在 php.ini 中使用 -1
将限制设置为无限制,然后重新启动 apache。
memory_limit = -1
如果仅在 Symfony 开发环境下才达到内存限制,我建议将以下内容添加到 web/app_dev.php
ini_set('memory_limit', '-1');
这样您就可以使用合理的内存量继续测试产品。通过 php.ini 修改整个环境可能会隐藏错误。
我通过安装 XDebug 解决了 Twig 调试中的内存不足错误。
因为 Twig 内部使用 PHP var_dump
函数,所以安装 XDebug 是个好主意,因为它将数组和对象的 var_dump()
输出限制在 3 层深,正如我们在 documentation.
感谢 @peezi。
甚至晚了,最近我遇到了关于 Out of Memory
使用 Symfony 3.4 访问 app.php 文件的问题。原来当你把SELinux设置成enforcing
时,即使你把你项目里面的var
目录的权限设置成777,它也无法写入。如果您按照官方文档中有关如何在生产中部署的步骤进行操作,它将 return 响应代码 500 并仅在 Web 服务器的错误日志中写入 PHP 已耗尽内存限制。
我不是 SELinux 专家,但我能解决这个问题的唯一方法是禁用 SELinux,但版本 /etc/selinux/config
文件设置 SELINUX=disabled
并重新启动 OS。
同样,SELinux 存在是有原因的,使用 Symfony 的 var
子文件夹不容易找到正确的配置,如果不考虑禁用 SELinux 就很难解决这个问题。
这可能有帮助:
php -d memory_limit=-1 /usr/local/bin/composer require ggergo/sqlindexhintbundle