在 CentOS 上,PHP-FPM 连接超时问题可能是由于多种原因导致的。以下是一些建议和解决方案:
编辑 /etc/php-fpm.d/www.conf
文件,找到以下参数并进行调整:
request_terminate_timeout
:设置脚本执行的最大时间,单位为秒。例如,将其设置为 0 表示无限制。默认值为 0。fastcgi_read_timeout
:设置 FastCGI 超时时间,单位为秒。例如,将其设置为 300。默认值为 60。修改后,重启 PHP-FPM 服务:
sudo systemctl restart php-fpm
如果你使用的是 Nginx 作为 Web 服务器,请编辑 /etc/nginx/nginx.conf
文件,找到以下参数并进行调整:
proxy_connect_timeout
:设置与后端服务器(PHP-FPM)的连接超时时间,单位为秒。例如,将其设置为 300。默认值为 75。proxy_read_timeout
:设置读取后端服务器响应的超时时间,单位为秒。例如,将其设置为 300。默认值为 60。proxy_send_timeout
:设置向后端服务器发送请求的超时时间,单位为秒。例如,将其设置为 300。默认值为 60。修改后,重启 Nginx 服务:
sudo systemctl restart nginx
确保防火墙允许 PHP-FPM 和 Web 服务器之间的通信。如果你使用的是 firewalld,请运行以下命令:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
如果 SELinux 已启用并阻止了 PHP-FPM 和 Web 服务器之间的通信,你可以尝试临时禁用 SELinux 进行测试:
sudo setenforce 0
如果这解决了问题,你可以考虑调整 SELinux 策略以允许所需的通信,或者将其永久设置为 permissive 模式(不推荐):
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
确保 PHP 代码中没有长时间运行的操作,例如无限循环或大量计算。如果有,请优化代码以减少执行时间。
尝试以上建议,看看是否能解决 CentOS 上 PHP-FPM 连接超时的问题。如果问题仍然存在,请提供更多详细信息以便进一步排查。