在 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 連接超時的問題。如果問題仍然存在,請提供更多詳細信息以便進一步排查。