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

拾柒
拾柒
发布时间:2026-08-22| 47人浏览过
原创

前言

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 往往只能缓解表面问题。更值得排查的是代码逻辑本身,例如是否存在不必要的大数组、重复加载数据、循环中持续堆积对象等情况。

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

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。