CentOS 7.5(Vesta)下500内部错误:如何配置Apache/Vesta 15分钟超时?
解决CentOS 7.5(Vesta)下Apache/PHP长时间脚本超时500错误的配置方法
我来帮你一步步解决这个问题——你遇到的500错误确实大概率是服务器层面的超时限制覆盖了PHP脚本里的设置,毕竟Vesta面板和Apache都会有自己的全局超时规则,下面是具体的配置步骤,都是非运维也能跟着操作的:
一、先改Apache的全局超时配置
Apache本身默认的超时时间一般是60秒,这就是为啥你脚本跑90秒就报错的原因,得把它改成15分钟(900秒):
- 登录服务器的命令行,用编辑器打开Apache的主配置文件:
如果找不到这个文件,用vi /etc/httpd/conf/httpd.conffind / -name httpd.conf命令找一下,Vesta环境下也可能在/usr/local/apache/conf/httpd.conf - 在文件里找这几个参数,没有的话就手动添加:
Timeout 900:这个是Apache的核心超时时间,直接改成900KeepAliveTimeout 120:保持连接的超时时间,也适当改长点ProxyTimeout 900:如果你的站点用了反向代理,这个也要改,不然代理层会先超时
- 保存文件后,重启Apache服务生效:
systemctl restart httpd
二、调整Vesta站点级的Apache配置(避免被面板覆盖)
Vesta会给每个站点生成单独的配置文件,可能会覆盖全局设置,所以要检查一下:
- 找到你的站点配置文件,路径一般是
/home/[你的用户名]/conf/web/[你的域名].conf,比如你是admin用户,域名是example.com,那就是:vi /home/admin/conf/web/example.com.conf - 检查文件里有没有
Timeout相关的设置,如果有就改成900,没有的话在合适位置加上Timeout 900 - 保存后再次重启Apache
三、修改PHP的全局配置(彻底替代脚本里的ini_set)
脚本里的ini_set经常会被服务器全局配置覆盖,所以直接改PHP的全局配置文件:
- 先找到你的PHP配置文件路径,执行命令:
输出里的php -i | grep php.iniLoaded Configuration File就是你要改的文件路径,比如/etc/php.ini - 打开这个文件,找到以下参数并修改:
max_execution_time = 900:PHP脚本的最大执行时间max_input_time = 900:接收用户输入的超时时间,生成报表可能需要接收大量数据,也改长memory_limit = 512M:大型报表生成很占内存,建议从默认的128M改成512M或者更大
- 保存后,根据你的PHP运行方式重启服务:
- 如果是用mod_php(Apache直接运行PHP),重启Apache就行
- 如果是用PHP-FPM,执行
systemctl restart php-fpm(如果是特定版本,比如PHP7.4就是systemctl restart php74-fpm)
四、(可选)用Vesta面板可视化操作
如果你怕命令行出错,也可以直接在Vesta面板里改:
- 登录Vesta面板,进入「Web」模块
- 找到你的站点,点击「Edit」(编辑)按钮
- 切换到「Advanced Options」或者「PHP Settings」标签:
- 在Apache设置里添加
Timeout 900 - 在PHP设置里把
max_execution_time改成900,同时调整memory_limit
- 在Apache设置里添加
- 保存设置,面板会自动重启相关服务
五、验证配置是否生效
写个简单的测试脚本验证一下:
- 在你的网站根目录创建
test_timeout.php,内容如下:<?php echo "开始时间:" . date('Y-m-d H:i:s') . "<br>"; sleep(120); // 让脚本休眠120秒,测试是否超时 echo "结束时间:" . date('Y-m-d H:i:s') . "<br>"; echo "当前max_execution_time:" . ini_get('max_execution_time') . "<br>"; ?> - 通过浏览器访问这个文件,如果能正常显示结束时间和
max_execution_time=900,说明配置生效了
额外提醒
- 如果你的服务器用了PHP-FPM,还要检查PHP-FPM的配置文件(比如
/etc/php-fpm.d/www.conf),把request_terminate_timeout改成900,然后重启PHP-FPM - 如果用了CDN(比如Cloudflare),CDN本身也有超时限制,默认一般是100秒,也要去CDN后台把超时时间改成900秒
- 其实生成大型报表最好用异步方式(比如后台执行,完成后通知你),长时间占用浏览器连接不是最优方案,但如果必须这么做的话,上面的配置应该能解决问题
内容的提问来源于stack exchange,提问作者baron_bartek
相关产品推荐
相关产品推荐

