PHP执行时间与内存限制优化,新手也能改的实操教程

很多新手站长在部署PHP程序(比如WordPress、ThinkPHP)时,经常会遇到“Fatal error: Maximum execution time exceeded”或“Allowed memory size exhausted”这类报错。
简单说,就是PHP脚本运行时间太长,或者用内存太多,被系统强制终止了。

本文从零开始,教你找到PHP配置文件、修改关键参数,并验证修改是否生效。
无论你用命令行还是宝塔面板,都能直接照做。

先弄清两个参数的作用

  • max_execution_time:单个PHP脚本允许执行的最大秒数。默认值通常是30秒,适合简单页面。如果你的程序需要大量计算或长时间等待(比如导入数据、生成报表),就可能超时。
  • memory_limit:单个PHP脚本允许占用的最大内存。默认值一般是128M或256M。图片处理、大文件解析等场景容易超出限制。

优化这两个参数,就是根据你的需求适当增大数值。
但注意,不要无脑设成无限大,否则可能会拖垮服务器。

方法一:直接修改 php.ini 文件(通用)

首先,找到php.ini文件位置。
登录服务器(SSH),执行:

php --ini

输出中会显示 Loaded Configuration File 的路径,例如 /etc/php/7.4/cli/php.ini
注意:这个对应的是命令行模式;
如果你是运行网页(通过Apache/Nginx),要修改Web服务器所使用的php.ini,通常路径类似 /etc/php/7.4/apache2/php.ini/etc/php/7.4/fpm/php.ini

不确定的情况下,在网站根目录创建一个 phpinfo.php 文件,内容:

访问该文件,查找“Loaded Configuration File”,就能看到当前使用的php.ini绝对路径。

找到后,用文本编辑器打开(例如nano):

sudo nano /etc/php/7.4/apache2/php.ini

Ctrl+W 搜索 max_execution_time,修改为:

max_execution_time = 120

(120秒,可根据需要改成300等)

再搜索 memory_limit,修改为:

memory_limit = 256M

(256M,也可改成512M、1024M等)

保存文件(Ctrl+X,然后 Y,回车)。
修改后必须重启Web服务器或PHP-FPM:

  • Apache:sudo systemctl restart apache2
  • Nginx + PHP-FPM:sudo systemctl restart php7.4-fpm(版本号换成你自己的)

方法二:宝塔面板可视化调整(新手首选)

宝塔面板用户不用去翻配置文件,直接在后台改即可。

  1. 登录宝塔面板,进入左侧“软件商店”。
  2. 找到你使用的PHP版本(例如PHP 7.4),点击“设置”。
  3. 在弹出的窗口中选择“配置文件”选项卡。
  4. 直接编辑显示出的 php.ini 内容:搜索 max_execution_timememory_limit,修改数值。
  5. 点击“保存”后,面板会自动重启PHP服务,无需手动操作。
注意:宝塔面板的 php.ini 修改后立即生效,不需要额外重启Web服务器。

高频问题与避坑

Q:我改完数值,为什么还是提示超时?
A:可能你改的是CLI版php.ini,而网站用的是FPM版。请先通过phpinfo()确认当前加载的配置文件路径,再修改对应的文件。

Q:设置成0就永远不超时吗?
A:max_execution_time = 0 确实表示无限制,但强烈不推荐。一旦死循环脚本会卡死PHP进程,影响整个网站。建议设置一个合理的大数值(比如300)。

Q:内存限制设成 -1 代表无限制?
A:是的。但同样风险很大,最好设置一个具体数值,例如1024M。

Q:修改后phpinfo()仍显示旧值?
A:确认你重启了正确的服务。另外,检查是否在多个php.ini中都有配置,优先级最高的那个才会生效。对于Apache mod_php,需要重启Apache;对于PHP-FPM,需重启php-fpm。

避坑提醒: 有些程序(如WordPress)还支持在 wp-config.php 中添加代码来临时调整执行时间和内存限制,但那只能影响该程序的前端请求,后台任务(如插件更新)仍受php.ini限制。
建议优先修改php.ini,全局生效。

修改后的验证方法

  1. 简单验证:重新访问phpinfo()页面,搜索 max_execution_timememory_limit,看数值是否变成你修改后的值。
  2. 压力测试:如果你有原本超时的脚本,重新运行一下,看是否正常完成。
  3. 命令行验证:执行 php -i | grep -E "max_execution_time|memory_limit" 可以看到CLI模式的值。但注意这不代表Web模式。

建议步骤:修改完php.ini → 重启服务 → 刷新phpinfo()确认 → 跑一遍之前报错的程序。
如果一切正常,优化完成。

如果你正在处理PHP执行时间与内存限制优化,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
多数时候,问题出在修改错了php.ini或没重启服务,检查这两点就能解决90%的疑惑。

分享到:
上一篇
数据库连接数优化防止连接耗尽教程
下一篇
服务器挖矿进程彻底查杀步骤:从发现到根除的完整指南
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意