PHP错误:Allowed memory size of 268435456 bytes exhausted (tried to allocate 87 bytes)
PHP 提示错误:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 87 bytes) in xxx
原因分析:
PHP 分配的最大内存耗尽了,导致无法再申请到内存,程序无法再执行
解决方法
需要修改配置文件 php.ini 增加最大内存限额,或者修改程序,分批执行减少内存开销
方法1:
1)修改配置文件 php.ini
vim /usr/local/php5/lib/php.ini
修改如下:
;memory_limit = 256M
memory_limit = 1024M
2)重启 php-fpm 或 apache httpd
/etc/init.d/php-fpm restart
3)查看 phpinfo() 信息
Core
Directive | Local Value | Master Value |
---|---|---|
allow_url_fopen | On | On |
allow_url_include | Off | Off |
always_populate_raw_post_data | 0 | 0 |
arg_separator.input | & | & |
arg_separator.output | & | & |
asp_tags | Off | Off |
ignore_user_abort | Off | Off |
implicit_flush | Off | Off |
include_path | .:/usr/local/php5/lib/php | .:/usr/local/php5/lib/php |
input_encoding | no value | no value |
internal_encoding | no value | no value |
log_errors | On | On |
log_errors_max_len | 1024 | 1024 |
mail.add_x_header | On | On |
mail.force_extra_parameters | no value | no value |
mail.log | no value | no value |
max_execution_time | 600 | 600 |
max_file_uploads | 20 | 20 |
max_input_nesting_level | 64 | 64 |
max_input_time | 60 | 60 |
max_input_vars | 1000 | 1000 |
memory_limit | 1024M | 1024M |
open_basedir | no value | no value |
output_buffering | 4096 | 4096 |
output_encoding | no value | no value |
output_handler | no value | no value |
post_max_size | 8M | 8M |
方法2:
php 文件开头里,增加一行设置
ini_set('memory_limit', '1024M');
方法3:
for 循环,多次分批执行,减少单次执行所需的内存开销,
特别是数据库查询结果集太大时,可分多次查询,分批保存结果到内存中
参考推荐:
Mac OS X 配置 Eclipse + PHP + XDebug
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-06-03 03:33:40
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: PHP错误:Allowed memory size of 268435456 bytes exhausted (tried to allocate 87 bytes) (米扑博客)