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
答案 0 :(得分:2)
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');
。但是the shorthand (K
, M
, G
) only works in php.ini, not in ini_set
。您必须输入实际的字节数(例如,1073741824
)。此外,1G
在大多数情况下都相当过分;非常非常少的非恶意PHP脚本需要这样的东西。即使加载了大量插件,即使像WordPress这样相当繁重的框架通常也能在64 MB左右运行良好。
找出你正在使用的php.ini文件(根据你安装的东西,有几个漂浮的情况并不罕见)。您可以通过两种方式执行此操作:
<?php phpinfo();
php -i | grep php.ini
。您应该看到类似Loaded Configuration File => /etc/php.ini
的行(当然,输出可能因系统而异)。通过将以memory_limit =
开头的行更改为更合适的内容来编辑您刚找到的文件,例如
memory_limit = 8M
请根据需要随意提高该数字,但我建议您开始小型(不是1G
),以防止意外使用服务器。
有一点需要注意:如果这是一台测试/开发机器,并且您正在运行xdebug之类的调试器或分析器,那么您可能需要更高的启动,而1G
并非疯狂。但是,不要在生产机器上以如此高的数字开始;努力工作。