PHP 7.1.15下php-fpm无法修改memory_limit问题求助
解决PHP-FPM无法修改memory_limit的问题
我之前也踩过几乎一模一样的坑,明明改了php.ini、脚本里也用了ini_set,但FPM环境下的memory_limit就是顽固地停在128M,折腾了好久才找到关键原因,给你几个核心排查方向:
1. 检查PHP-FPM Pool配置的强制覆盖
这是最常见的「隐形坑」!PHP-FPM的池配置文件(比如默认的www.conf,路径一般是/etc/php/7.1/fpm/pool.d/www.conf,不同发行版可能略有差异)里,允许用php_admin_value或php_value直接覆盖php.ini的设置,而且**php_admin_value设置的参数是完全无法通过脚本里的ini_set()修改的**。
打开你的池配置文件,搜索以下内容:
php_admin_value[memory_limit] = 128M # 或者 php_value[memory_limit] = 128M
如果存在这类配置,要么把值改成你需要的-1,要么直接注释掉这一行,之后一定要重启PHP-FPM服务。
2. 确认PHP-FPM服务已重启
修改任何配置文件后,必须重启PHP-FPM才能让新配置生效,这是很多人容易忽略的细节:
# 根据你的系统选择对应命令: systemctl restart php7.1-fpm # 或者 service php7.1-fpm restart
3. 查看FPM环境下的phpinfo()细节
在FPM环境下运行一个phpinfo()脚本,重点关注这几个部分:
- Loaded Configuration File:确认加载的php.ini确实是你修改的那一个
- memory_limit:观察「Local Value」和「Master Value」,如果Master Value是-1但Local Value是128M,说明有其他配置(池配置、额外的.ini文件或.user.ini)覆盖了主配置
- Additional .ini files parsed:检查有没有其他被加载的.ini文件,这些文件里也可能偷偷设置了memory_limit
4. 检查网站目录下的.user.ini文件
如果你的服务器开启了user_ini.filename配置(默认是开启的),网站根目录或脚本所在目录下的.user.ini文件也会影响memory_limit,且优先级较高。可以检查一下相关目录里有没有这个文件,看看里面的配置项。
最后验证
修改完上述配置并重启FPM后,再运行你的测试脚本:
ini_set('memory_limit', -1); echo ini_get('memory_limit'); exit;
如果还是有问题,再回头看phpinfo里的memory_limit相关字段,确认所有可能的覆盖点都被清理了。
内容的提问来源于stack exchange,提问作者DrKey
相关产品推荐
相关产品推荐

