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 文件(有多个文件并不罕见,具体取决于您的安装方式)。您可以通过两种方式执行此操作:
- 将其放入 .php 文件并运行:
<?php phpinfo();
- 在命令行中输入
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/