PHP内存耗尽报错存疑:申请内存远低于限值,WHM设置未生效
问题解析与解决方案
为什么申请10.4MB却触发内存耗尽?
报错里的“tried to allocate 10.4MB”是指本次要分配的内存大小,而内存耗尽的判定逻辑是:脚本当前已占用的内存 + 本次要分配的内存超过了允许的上限(注:你转换的138MB是按1000进制计算的近似值,PHP采用1024进制,134217728字节实际等于128MB)。也就是说,脚本运行到报错位置时,已经占用了接近128MB的内存,再加10.4MB就超出限制了。
为什么WHM设置512MB但实际生效128MB?
PHP-FPM环境下,全局设置可能被多层级配置覆盖,排查方向如下:
- 检查PHP-FPM池配置:每个站点对应独立的FPM池配置文件(通常路径为
/etc/php/{你的PHP版本}/fpm/pool.d/{站点标识}.conf),查看是否存在php_value[memory_limit]或php_admin_value[memory_limit]配置,该设置优先级高于WHM全局配置。 - 检查站点本地配置:
- 若使用Apache,查看站点根目录的
.htaccess文件,是否有php_value memory_limit 128M这类设置; - 若使用Nginx+PHP-FPM,查看站点目录下的
php.ini或.user.ini文件,是否定义了memory_limit = 128M,这类用户级配置会覆盖全局设置。
- 若使用Apache,查看站点根目录的
- 确认配置生效状态:修改WHM的PHP内存设置后,必须重启PHP-FPM服务(命令:
systemctl restart php-{版本}-fpm),否则旧配置仍在运行。 - 排查配置缓存:PHP-FPM可能缓存了旧配置,可尝试重新加载配置(
systemctl reload php-{版本}-fpm)或重启服务。
附原始报错与标准转换说明
原始报错:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 10489856 bytes) in /home/MY_USER/public_html/application/views/ms/somefile.php
按PHP标准1024进制转换后(1MB=1024×1024字节):
Allowed memory size of 128 Mega-bytes exhausted (tried to allocate ~10.0 Mega-bytes) in /home/MY_USER/public_html/application/views/ms/somefile.php
内容的提问来源于stack exchange,提问作者OAH
相关产品推荐
相关产品推荐

