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 安装 PHP

Mac下搭建 LNMP 和 LAMP 开发环境

Mac OS X 配置 Eclipse + PHP + XDebug