位置:首页 > PHP > Linux 上如何设置 PHP 内存限制:php.ini、.htaccess 与 CLI 三种方法

Linux 上如何设置 PHP 内存限制:php.ini、.htaccess 与 CLI 三种方法

时间:2026-08-22  |  作者:半糖攻略君  |  阅读:0

目录

  1. 先判断该用哪种设置方式
  2. 方法一:修改 php.ini,适合大多数场景
  3. 方法二:用 .htaccess 单独调整站点限制
  4. 方法三:命令行临时设置,适合一次性任务
  5. 调整内存限制前,最好先看这两个风险点

前言

PHP 脚本一旦触发内存不足,常见报错往往都指向 memory_limit。真正麻烦的地方通常不在“怎么改”,而在于要先判断你改的是 Apache、CLI,还是 Nginx + PHP-FPM 这一层的配置。 这篇文章把 Linux 下调整 PHP 内存限制的三种常见做法拆开说明:什么时候该改 php.ini,什么时候适合用 .htaccess,以及临时跑脚本时怎么直接带参数执行。看完之后,你可以按自己的运行环境选最省事的一种,同时避开改了却不生效的问题。

PHP 脚本一旦触发内存不足,常见报错往往都指向 memory_limit。真正麻烦的地方通常不在“怎么改”,而在于要先判断你改的是 Apache、CLI,还是 Nginx + PHP-FPM 这一层的配置。

这篇文章把 Linux 下调整 PHP 内存限制的三种常见做法拆开说明:什么时候该改 php.ini,什么时候适合用 .htaccess,以及临时跑脚本时怎么直接带参数执行。看完之后,你可以按自己的运行环境选最省事的一种,同时避开改了却不生效的问题。

先判断该用哪种设置方式

在动手之前,先确认你要解决的是哪一类场景:

对比修改 php.ini、.htaccess 与 CLI 参数三种 PHP 内存限制设置方式的适用场景与生效范围
PHP 内存限制三种设置方式对比先区分运行环境,再决定改全局配置、单站点配置还是临时命令参数,能减少“改了却没生效”的排查时间。
  • 大多数站点或服务统一调整:优先修改 php.ini
  • 只想让某个 Apache 站点单独生效:可以使用 .htaccess
  • 只为一次命令行脚本临时放宽限制:直接使用 CLI 的 -d 参数即可。

这一步很重要,因为 PHP 在不同运行方式下,读取的配置文件并不一定相同。最常见的问题就是:你改了一个 php.ini,但实际执行脚本的环境根本没加载它。

方法一:修改 php.ini,适合大多数场景

这是最直接、也最常用的做法。只要你有服务器配置权限,通常都建议优先采用这种方式。

修改 php.ini 后从定位配置文件到重启服务的完整步骤流程图
通过 php.ini 调整 memory_l修改 php.ini 看起来只是改一行参数,但真正容易出错的是找错文件或忘记重启服务。

先找到当前环境使用的 php.ini

php.ini 的位置会受到 PHP 版本和运行环境影响。文中给出的常见路径包括:

  • Apache 环境:/etc/php/{php_version}/apache2/php.ini
  • CLI 命令行环境:/etc/php/{php_version}/cli/php.ini

如果你不确定当前加载的是哪一个配置文件,最稳妥的办法是直接执行:

php --ini

这个命令会输出当前 PHP 加载的配置文件路径,适合先做定位再修改。

编辑配置并修改 memory_limit

确认路径后,用常用编辑器打开配置文件。例如在 Apache 环境下:

sudo nano /etc/php/{php_version}/apache2/php.ini

如果要修改的是 CLI 环境,就改成对应路径:

sudo nano /etc/php/{php_version}/cli/php.ini

打开后搜索 memory_limit,将其改为需要的值,例如:

memory_limit = 512M

如果你只是想确认当前限制是多少,也可以直接搜索 memory_limit 查看现有配置。

保存后重启服务才会生效

编辑完成后保存退出:

  • nano:按 Ctrl + X,再按 Y,最后按 Enter
  • vim:按 Esc,输入 :wq,再按 Enter

如果你修改的是 Web 服务使用的 PHP 配置,还需要重启相关服务。

Apache:

sudo systemctl restart apache2

Nginx + PHP-FPM:

sudo systemctl restart php{php_version}-fpm
sudo systemctl restart nginx

这里的 {php_version} 要替换为实际 PHP 版本号。只有完成重启,新的内存限制才会被 Web 请求正式加载。

方法二:用 .htaccess 单独调整站点限制

如果你无法修改服务器级别的 php.ini,或者只想针对某一个 Apache 站点单独设置,.htaccess 会更方便。

在站点根目录加入配置

在网站根目录找到或创建 .htaccess 文件,然后加入下面这一行:

php_value memory_limit 512M

保存后即可生效,通常不需要重启服务。

这种方式的适用前提

.htaccess 方式有两个明确边界:

  • 只适用于 Apache。
  • 服务器必须允许通过 .htaccess 覆盖相关配置。

如果你的环境是 Nginx,或者主机商禁用了这类覆盖配置,那么这条方法就不会起作用。

方法三:命令行临时设置,适合一次性任务

如果你只是临时执行某个 PHP 脚本,不想改配置文件,也不想影响其他任务,可以直接在命令中追加 -d 参数:

php -d memory_limit=512M

这种设置只对当前命令行会话有效。终端关闭、命令结束,或者下次重新执行脚本时,这个限制都不会被保留。

因此,它很适合以下场景:

  • 临时测试脚本是否因内存限制失败
  • 执行一次性数据处理任务
  • 排查某个 CLI 脚本的资源占用问题

调整内存限制前,最好先看这两个风险点

不要把限制设到超过机器承受范围

设置的内存值不能超过服务器的实际物理内存。否则在高并发或多个进程同时运行时,系统可能出现进程被杀死,严重时还会拖垮整台机器。

设置 PHP 内存限制时需要关注的资源风险与优化方向信息图
调大 memory_limit 前要看的两个把 memory_limit 调大只是手段,不是默认答案。

能优化代码时,别只靠继续加内存

如果应用确实长期需要更大的内存,单纯提升 memory_limit 往往只能缓解表面问题。更值得排查的是代码逻辑本身,例如是否存在不必要的大数组、重复加载数据、循环中持续堆积对象等情况。

换句话说,内存限制的调整应该服务于实际业务需要,而不是替代性能优化。够用、稳定、可控,通常比一味调大更重要。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多