答案:通过修改php.ini、.htaccess、ini_set()或PHP-FPM配置可调整PHP内存限制。具体步骤包括编辑对应配置文件,设置memory_limit值,并重启相关服务以生效,从而解决脚本因内存耗尽而中断的问题。

如果您在运行PHP应用程序时遇到脚本因内存耗尽而中断的问题,这通常是由于PHP默认的内存限制过低导致。调整内存限制可以有效解决此类错误。
本文运行环境:Dell XPS 13,ubuntu 22.04
一、修改php.ini配置文件
通过更改全局PHP配置文件php.ini中的memory_limit参数,可以永久性地调整php脚本可使用的最大内存量。此方法适用于所有使用该PHP环境的应用程序。
1、打开终端并输入命令 sudo nano /etc/php/8.1/cli/php.ini 来编辑CLI版本的PHP配置文件(根据实际安装的PHP版本调整路径)。
立即学习“PHP免费学习笔记(深入)”;
2、查找 memory_limit 这一行,将其值更改为所需大小,例如设置为512M:memory_limit = 512M。
3、保存更改并退出编辑器,然后重启Web服务器以使更改生效,如执行 sudo systemctl restart apache2 或 sudo systemctl restart nginx。
二、在.htaccess文件中设置内存限制
对于共享主机或无法修改主配置文件的情况,可以在网站根目录下的 .htaccess 文件中设置内存限制,仅影响当前站点。
1、使用文本编辑器打开或创建网站根目录下的 .htaccess 文件,例如执行 nano /var/www/html/.htaccess。
2、添加如下行来提高内存限制:php_value memory_limit 256M。
3、保存文件后刷新网页,检查是否解决了内存不足问题。
三、使用ini_set()函数动态调整内存
在特定PHP脚本中临时增加内存限制,适合只对某些高负载脚本进行优化,不影响其他脚本运行。
1、在需要更多内存的PHP脚本顶部插入代码:ini_set(‘memory_limit’, ‘512M’);。
2、确保该语句位于脚本开始执行逻辑之前,以便尽早应用新的内存限制。
3、运行脚本并验证是否成功避免了内存溢出错误。
四、通过PHP-FPM配置单独调整池内存
当使用PHP-FPM与nginx配合时,可通过修改FPM池的配置文件设置特定用户的PHP内存限制,实现更细粒度控制。
1、编辑对应站点的PHP-FPM池配置文件,例如执行 sudo nano /etc/php/8.1/fpm/pool.d/www.conf。
2、在配置文件末尾添加或修改如下行:php_admin_value[memory_limit] = 512M。
3、保存文件后重启PHP-FPM服务:sudo systemctl restart php8.1-fpm。


