PHP fatal error : Allowed memory size in/var/www/html/vendor/composer/ClassLoader.

标签 php linux laravel-4 amazon-ec2 out-of-memory

Laravel 4.2、亚马逊 ec2 Linux

PHP fatal error :

Allowed memory size of 262144 bytes exhausted (tried to allocate 3072 bytes) in /var/www/html/vendor/composer/ClassLoader.php on line 78

最佳答案

TL;DR 您需要增加 memory_limit在 php.ini 中设置。您几乎不允许您的脚本使用任何内存。

问题

错误消息Allowed memory size of 262144...意味着您有 memory_limit设置为 256 kb。那太低了。对于大多数有用的应用程序,您至少需要几 MB。我会从 8MB 开始,看看效果如何。

解决方案

更改 memory_limit环境。理论上,您可以通过两种方式执行此操作:(1) 编辑 php.ini 或 (2) 使用 ini_set() .

实际上,您不能总是使用 ini_set('memory_limit', value); 。一方面,某些扩展(例如 suhosin)会阻止脚本设置 memory_limit这样。另一方面,你必须小心你的做法。例如,您建议使用 ini_set('memory_limit', '1G'); 。但是the shorthand ( K , M , G ) only works in php.ini, not in ini_set 。您必须输入实际的字节数(例如 1073741824 )。另外,1G对于大多数用途来说是相当过分的;非常非常少的非恶意 PHP 脚本需要这样的东西。即使是像 WordPress 这样相当笨重的框架,即使加载了大量插件,通常也能在 64 MB 左右的范围内运行良好。

如何更改 php.ini 中的设置

找出您正在使用哪个 php.ini 文件(有多个文件并不罕见,具体取决于您的安装方式)。您可以通过两种方式执行此操作:

  1. 将其放入 .php 文件并运行:<?php phpinfo();
  2. 在命令行中输入 php -i | grep php.ini 。您应该会看到一行类似 Loaded Configuration File => /etc/php.ini 的内容。 (当然,输出可能因系统而异)。

通过更改以 memory_limit = 开头的行来编辑您刚刚找到的文件。更合适的东西,比如

memory_limit = 8M

您可以根据需要随意增加该数字,但我建议从小规模开始(而不是 1G ),以防止服务器意外崩溃。

一个警告:如果这是一台测试/开发机器,并且您正在运行像 xdebug 这样的调试器或分析器,您可能希望从更高的位置开始,并且 1G并没有疯。但不要在生产机器上使用如此高的数字;努力做到这一点。

关于PHP fatal error : Allowed memory size in/var/www/html/vendor/composer/ClassLoader.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273486/

相关文章:

php - 由于 apache2 配置,Laravel 4 Controller 路由无法正常工作

php - Laravel 中间表

php - 如何在 php 中不显示 cURL 响应数据?

c - 当 select() 系统调用中的 nfds=0 时发生了什么

c - linux 实时调度任务时出现运行时错误?

php - 拉维尔 4 : how to write the correct nested controller for nested resource?

php - Soundcloud php curl 程序

php - 在 Laravel/Eloquent 中返回多个而不是一个

Linux-Perl : Printing the content of the script I am executing

php - Laravel 计数中的行数有很多关系