1. 修改PHP-FPM配置文件(核心解决步骤)
PHP-FPM的超时问题主要需调整其配置文件中的请求超时和FastCGI读取超时参数。配置文件通常位于/etc/php/{版本号}/fpm/pool.d/www.conf(如/etc/php/8.1/fpm/pool.d/www.conf)。
0(无限制),建议根据业务需求调整为300(5分钟)或更长(如600),避免长时间运行的脚本被强制终止。300(5分钟),配合request_terminate_timeout使用。sudo systemctl restart php{版本号}-fpm # 如php8.1-fpm
2. 调整Web服务器(Nginx/Apache)的超时设置
若使用Nginx作为反向代理,需确保其FastCGI配置的超时时间大于等于PHP-FPM的设置,避免Nginx提前终止请求。
/etc/nginx/sites-available/your-site),在location ~ \.php$块中添加/修改以下参数:fastcgi_read_timeout 300; # FastCGI读取超时(秒)
fastcgi_send_timeout 300; # FastCGI发送超时(秒)
fastcgi_connect_timeout 60; # FastCGI连接超时(秒)
修改后重启Nginx:sudo systemctl restart nginx
/etc/apache2/mods-enabled/fastcgi.conf,调整Timeout参数(默认300秒),确保足够长。3. 检查防火墙设置(避免网络拦截)
若PHP-FPM使用Unix套接字(如/run/php/php{版本号}-fpm.sock),需确保防火墙允许本地进程访问;若使用TCP端口(如9000),需开放该端口。
sudo ufw allow 9000/tcp
www-data用户组),避免Nginx无法访问:ls -l /run/php/php{版本号}-fpm.sock # 检查所有者是否为www-data
4. 优化应用代码(从根源解决问题)
超时问题的根本原因往往是代码性能瓶颈(如死循环、慢查询、大文件上传)。需通过以下方式优化:
5. 其他辅助优化
php.ini(/etc/php/{版本号}/cli/php.ini),取消注释以下行:zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
重启PHP-FPM使更改生效。memory_limit参数(php.ini中),如memory_limit = 256M,避免因内存耗尽导致脚本终止。