应将PHP内存限制调高至512M或以上,可通过宝塔面板图形界面修改php.ini中memory_limit参数、直接编辑对应PHP版本的php.ini文件、在网站根目录配置.user.ini文件,或在脚本开头用ini_set('memory_limit','512M')动态设置。

如果您在宝塔面板中运行PHP程序(如WordPress、CRMEB或大型后台系统)时频繁出现“Allowed memory size exhausted”错误,则说明当前PHP内存限制过低,无法支撑脚本执行所需资源。以下是针对性设置PHP内存限制的操作步骤:
一、通过宝塔面板图形界面修改memory_limit
该方法适用于大多数用户,无需命令行操作,配置直接写入php.ini并立即生效(需重载服务)。此方式修改的是所选PHP版本的全局配置,影响所有使用该PHP版本的网站。
1、登录宝塔面板,点击左侧菜单「软件商店」→ 找到已安装的目标PHP版本(如PHP 8.0)→ 点击右侧「设置」按钮。
2、在打开的PHP管理页面中,切换至「配置修改」选项卡。
立即学习“PHP免费学习笔记(深入)”;
3、在配置项列表中定位到memory_limit参数,将其值修改为所需大小,例如:512M(推荐不低于256M,CRMEB Pro等系统要求300M以上)。
4、确认无误后点击右上角「保存」按钮。
5、返回PHP管理页面,点击「服务」→「重载配置」(或「重启」),使新配置加载生效。
二、直接编辑php.ini文件修改
该方法提供最高控制精度,可避免面板缓存或界面延迟导致的配置未同步问题,适用于多PHP版本共存或需批量调整场景。修改位置为PHP核心配置文件,路径由PHP版本决定。
1、在宝塔面板「软件商店」中找到对应PHP版本,点击「设置」→「配置文件」,打开实际生效的php.ini路径(如/www/server/php/80/etc/php.ini)。
2、在编辑器中按Ctrl+F搜索memory_limit,定位到该行(通常形如memory_limit = 128M)。
3、将等号右侧数值修改为明确单位格式,例如:memory_limit = 512M(严禁写成512m、512MB或-1,PHP仅识别K/M/G且区分大小写)。
4、保存文件后,回到该PHP版本设置页,点击「服务」→「重载配置」。
三、通过.user.ini文件对单站单独设置
.user.ini是宝塔默认启用的用户级覆盖配置,优先级高于php.ini,适用于同一服务器下不同网站有差异化内存需求的场景。该文件位于网站根目录,仅作用于本目录及子目录。
1、在宝塔面板左侧点击「网站」→ 找到目标站点 → 点击右侧「根目录」进入文件管理器。
2、确认是否存在.user.ini文件;若不存在,点击右上角「新建文件」,命名为.user.ini。
3、双击打开该文件,在首行添加:memory_limit = 512M(注意:不加空格、不加引号、不换行)。
4、保存后,无需重启PHP,宝塔默认每5分钟自动重载一次.user.ini;也可手动点击该站点右侧「重载配置」立即生效。
四、在PHP脚本内动态提升内存上限
该方法仅对当前执行脚本生效,不改变全局配置,适合临时处理大数组、Excel导出、图像批量处理等高内存瞬时需求场景,但不能替代长期配置调整。
1、在PHP脚本最开头(<?php 之后第一行)插入以下代码:
ini_set('memory_limit', '512M');
2、确保该语句位于任何可能触发内存分配的操作之前(如file_get_contents、json_decode、循环读取数据库结果集等)。
3、若需彻底解除限制(仅限可信环境且已评估风险),可设为:ini_set('memory_limit', '-1');
五、验证memory_limit是否成功应用
配置修改后必须验证实际生效值,避免因.user.ini冲突、PHP版本选错、服务未重载等原因导致设置无效。
1、在网站根目录新建一个名为memtest.php的文件,内容为:<?php echo ini_get('memory_limit'); ?>
2、通过浏览器访问http://yourdomain.com/memtest.php,页面应直接输出如512M。
3、同时建议访问phpinfo.php(内容为<?php phpinfo(); ?>),搜索memory_limit,确认其值与设置一致,且Loaded Configuration File指向正确的php.ini路径。











