PHP致命错误:允许内存大小在/var/www/html/vendor/composer/ClassLoader.php


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

Laravel 4.2, Amazon ec2 Linux

PHP致命错误:

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您需要在php.ini中增加memory_limit设置。你几乎没有让你的脚本使用任何内存。

<标题>

错误信息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');。但是简写(K, M, G)只能在php.ini中工作,而不能在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并不是疯狂的。但不要在生产机器上设置如此高的数字;