公司禅道研发反馈任务创建的多了就报:Allowed memory size of 33554432 bytes exhausted (tried to alloate 3643528 bytes) in lib/base/front/front.class.php on line 1315 when visiting /index.php?m=execution&f=task&id=28;通过报错即可得知,php的memory_limit默认是32M已经用光了。于是果断创建phpinfo.php文件查看php的配置。发现memory_limit果然是32M。
<?php phpinfo(); ?>
接下来我就说说我遇到的坑吧,它导致我修改完成之后一直没有生效。
1、找到php.ini文件修改memory_limit的值
我修改了/usr/local/php/lib/php.ini中的memory_limit的值,重启了php-fpm和nginx,然后再次查看phpinfo.ini所记录的值,发现没有生效。这种方式是好使的,因为我在另一台php主机上测试过了,可以修改成功,但是就这台部署了禅道的主机不生效。
2、修改php-fpm的配置文件。
后来了解到,php-fpm.conf中的配置优先级高于php.ini,可能会导致php.ini的修改无效。于是顺着这个思路找了过去。发现php-fpm.conf中并没有定义memory_limit这个参数。然后我往下又翻了翻配置发现了这么一句:include=/usr/local/php/etc/php-fpm.d/*.conf。然后我又到/usr/local/php/etc/php-fpm.d/目录下去看看,这一看,果然发现了罪魁祸首:
然后果断修改了这个值,由32M修改为512M;然后重启了php-fpm:
# 杀死pip-fpm的进程 for i in `ps aux |grep php-fpm |grep -v grep |awk '{print $2}'`;do kill -9 $i;done # 重启php-fpm php-fpm # 重启nginx nginx -s reload
再次查看phpinfo信息,修改成功: