Nginx+PHP-FPM7.0环境Symfony3.3内存耗尽致500错误求助
解决Symfony 3.3 + PHP-FPM 7.0的内存耗尽500错误
嘿,这个问题的根源一眼就能看出来——你的PHP内存限制被设置得极低(只有2MB),Symfony 3.3框架启动和运行需要远大于这个值的内存,直接触发了致命错误。我来给你一步步搞定它:
1. 调整PHP-FPM的全局内存限制
- 找到PHP 7.0对应的
php.ini文件,路径通常是/etc/php/7.0/fpm/php.ini(不同Linux发行版可能略有差异,比如CentOS可能是/etc/php.ini)。 - 打开文件后,搜索
memory_limit参数,把它改成至少128M(Symfony 3.x推荐256M更稳妥):memory_limit = 256M - 保存文件后,重启PHP-FPM服务让配置生效:
sudo systemctl restart php7.0-fpm # 或者如果你的系统用的是service命令: sudo service php7.0-fpm restart
2. 检查Nginx配置是否强制覆盖了内存限制
有时候Nginx的FastCGI配置会手动设置PHP参数,导致全局配置被覆盖:
- 打开你的Symfony站点对应的Nginx配置文件(通常在
/etc/nginx/sites-available/目录下)。 - 查找是否有类似这样的行:
fastcgi_param PHP_VALUE "memory_limit=2M"; - 如果有,把它修改为正确的内存值,或者直接删除这一行(让PHP-FPM的全局配置生效):
fastcgi_param PHP_VALUE "memory_limit=256M"; - 保存配置后,重启Nginx:
sudo systemctl restart nginx
3. 检查Symfony前端控制器的局部设置
偶尔会有人在app.php里手动设置内存限制,导致全局配置失效:
- 打开你的Symfony项目
web/app.php文件。 - 查看是否有类似这样的代码:
ini_set('memory_limit', '2M'); - 如果有,删除这一行或者修改为更高的值,比如:
ini_set('memory_limit', '256M');
验证配置是否生效
你可以在web目录下创建一个临时的phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
访问这个文件,搜索memory_limit,确认它已经变成你设置的值。验证完成后记得删除这个文件,避免安全风险。
一般来说,做完这些步骤后,访问app.php就不会再出现内存耗尽的500错误了。生产环境下建议不要设置超过1G的内存限制,避免潜在的内存泄漏问题,256M对于Symfony 3.3来说完全足够。
内容的提问来源于stack exchange,提问作者Mathieu Allain
相关产品推荐
相关产品推荐

