Apache2执行60秒后网关超时,如何延长至5分钟?
解决Apache2网关超时问题:将PHP/Laravel执行时间延长至5分钟
你已经调整了php.ini和Apache的Timeout配置,但还是碰到504网关超时——这种情况大概率是漏掉了PHP-FPM(多数Laravel生产环境会用FPM模式)或Apache代理相关的关键配置,下面是你需要补充检查的几个核心点:
1. 修正PHP-FPM的配置(重中之重)
如果你的服务器是通过PHP-FPM处理PHP请求,那你之前修改的/etc/php5/apache2/php.ini是给mod_php用的,FPM会读取独立的配置文件,同时还有自身的超时规则:
- 编辑FPM专属的php.ini:
sudo nano /etc/php5/fpm/php.ini
调整以下参数(直接设为5分钟=300秒,不建议设0,部分环境对0的解析存在异常):max_execution_time = 300 max_input_time = 300 memory_limit = 256M # 可根据项目实际需求调高,比如512M - 编辑FPM池配置文件:
sudo nano /etc/php5/fpm/pool.d/www.conf
找到request_terminate_timeout项(没有的话就新增),设置为:request_terminate_timeout = 300s - 重启PHP-FPM服务:
sudo service php5-fpm restart
2. 添加Apache的ProxyTimeout配置
当Apache通过mod_proxy_fcgi连接PHP-FPM时,Timeout参数仅控制Apache自身的连接超时,代理请求的超时需要由ProxyTimeout单独设置,这是很多人容易忽略的点:
- 编辑
/etc/apache2/apache2.conf,在现有Timeout配置下方添加:ProxyTimeout 300 - 重启Apache服务:
sudo service apache2 restart
3. 验证配置是否生效
可以在项目根目录创建一个phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
访问该文件后,搜索以下关键词确认配置是否生效:
max_execution_time:值应为300request_terminate_timeout:值应为300秒ProxyTimeout:在Apache环境信息中能看到300的设置
你的错误截图显示的是典型的Apache 504网关超时(由Apache/2.4.7返回),以上配置应该能覆盖绝大多数这类场景。如果问题仍存在,可以查看Laravel日志(storage/logs/laravel.log),排查是否是特定代码逻辑导致的超时。
内容的提问来源于stack exchange,提问作者Shahneel Ahmed
相关产品推荐
相关产品推荐

