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文件(有几个浮动文件并不罕见,这取决于您如何安装东西)。您可以通过两种方式实现:
- 把它放在。php文件中并运行:
<?php phpinfo();
- 在命令行中输入
php -i | grep php.ini
。您应该看到一行类似Loaded Configuration File => /etc/php.ini
的内容(当然,输出可能因系统而异)。
编辑您刚刚找到的文件,将以memory_limit =
开头的行更改为更合适的内容,如
memory_limit = 8M
可以根据需要随意增加这个数字,但我建议从很小的数字开始(不是1G
),以防止意外地使您的服务器崩溃。
一个警告:如果这是一台测试/开发机器,并且您正在运行调试器或分析器,如xdebug,您可能希望启动更高,1G
并不是疯狂的。但不要在生产机器上设置如此高的数字;