温馨提示×

ubuntu php-fpm怎样配置超时时间

小樊
40
2026-09-01 11:29:24
栏目: 编程语言

在 Ubuntu 下,PHP-FPM 的“超时时间”其实分好几个层面,很多人容易混淆。下面按常见场景给你说明怎么配置。


一、PHP 脚本最大执行时间(最常见)

1️⃣ php.ini 中的设置

max_execution_time = 30

单位:秒
表示 PHP 脚本本身最多执行 30 秒

修改后重启 PHP-FPM:

sudo systemctl restart php-fpm
# 或(取决于版本)
sudo systemctl restart php8.1-fpm

2️⃣ PHP 代码中临时设置

set_time_limit(120);

ini_set('max_execution_time', 120);

二、PHP-FPM 请求超时(request_terminate_timeout)

这是 PHP-FPM worker 进程被杀掉的超时,和 php.ini 不同。

配置文件位置

/etc/php/8.1/fpm/pool.d/www.conf

(版本号按你实际来)

修改内容

request_terminate_timeout = 60s

✅ 含义:

  • 单个请求超过 60 秒
  • FPM 直接杀掉该 worker
  • 返回 502 / 504

重启:

sudo systemctl restart php8.1-fpm

三、FastCGI / Nginx 层面的超时(很重要)

如果你是 Nginx + PHP-FPM,以下也要配,否则 PHP 还没超时,Nginx 先断了。

Nginx 配置

location ~ \.php$ {
    fastcgi_pass   unix:/run/php/php8.1-fpm.sock;
    fastcgi_read_timeout 120s;
    fastcgi_send_timeout 120s;
    include fastcgi_params;
}

或全局:

http {
    fastcgi_read_timeout 120s;
}

重启 Nginx:

sudo systemctl restart nginx

四、PHP-FPM 空闲进程超时(不是请求超时)

idle_timeout = 60s

worker 空闲多久后被回收(不影响请求)


五、常见错误对照表

现象 可能原因
502 Bad Gateway request_terminate_timeout 太小
504 Gateway Timeout Nginx fastcgi_read_timeout 太小
PHP 没超时但被中断 FPM 超时杀进程

六、推荐生产配置示例(通用)

www.conf

request_terminate_timeout = 60s

php.ini

max_execution_time = 30

nginx

fastcgi_read_timeout 60s;

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 版本
  • 是 Nginx 还是 Apache
  • 具体报错(502 / 504 / 白屏)

我可以直接给你一份精确配置

0