调整php内存限制可解决内存耗尽问题。通过修改php.ini中memory_limit参数可全局生效;使用ini_set()函数可在单个脚本中动态设置;通过.htaccess文件可针对目录设置,适用于apache环境;在nginx+PHP-FPM架构下,可通过FPM池配置php_admin_value[memory_limit]实现更精细控制。四种方法分别适用于不同场景,需根据实际环境选择并重启相应服务使配置生效。

如果您在运行php脚本时遇到内存耗尽的错误提示,可能是由于默认的内存限制过低导致脚本无法继续执行。调整PHP的最大执行内存可以有效解决此类问题。
本文运行环境:Dell XPS 13,ubuntu 24.04
一、修改php.ini文件中的memory_limit参数
通过直接编辑PHP的主配置文件php.ini,可以全局性地调整脚本允许使用的最大内存量。此设置对所有PHP脚本生效,适用于需要长期稳定运行高内存需求应用的场景。
1、使用终端命令find / -name "php.ini" 2>/dev/NULL查找当前系统中php.ini文件的位置。
立即学习“PHP免费学习笔记(深入)”;
2、找到后使用文本编辑器打开该文件,例如:sudo nano /etc/php/8.3/apache2/php.ini(路径可能因安装方式而异)。
3、搜索memory_limit这一行,将其值修改为所需大小,例如设为512M:memory_limit = 512M。
4、保存并关闭文件,随后重启Web服务器服务以使更改生效,如Apache执行sudo systemctl restart apache2。
二、使用ini_set()函数动态设置内存限制
在特定PHP脚本中临时提高内存上限,不会影响其他脚本或全局配置。适合用于处理一次性大容量数据操作的任务。
1、在目标PHP脚本的起始位置添加如下代码:ini_set(‘memory_limit’, ‘256M’);。
2、可根据实际需求将数值调整为128M、512M或其他合理值。
3、确保该语句位于脚本早期执行阶段,避免在已接近内存极限时才尝试修改。
三、通过.htaccess文件设置内存限制(适用于Apache环境)
对于共享主机或无法访问php.ini的情况,可通过目录级配置文件.htaccess进行设置,作用范围限定于当前目录及其子目录。
1、进入网站根目录或目标子目录,创建或编辑名为.htaccess的文件。
2、添加以下指令:php_value memory_limit 256M。
3、保存文件并将权限设置为644,确保Web服务器可正确读取。
4、访问相关页面验证是否生效,注意某些托管环境可能禁用此功能。
四、利用PHP-FPM配置文件单独设定内存限制
在使用Nginx与PHP-FPM架构时,可通过FPM池配置实现更细粒度的资源控制,尤其适用于多站点共存环境。
1、定位到PHP-FPM池配置目录,通常位于/etc/php/8.3/fpm/pool.d/下。
2、编辑对应站点的.conf文件,例如www.conf。
3、在配置段中加入:php_admin_value[memory_limit] = 384M。


