You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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秒):

  1. 登录服务器的命令行,用编辑器打开Apache的主配置文件:
    vi /etc/httpd/conf/httpd.conf
    
    如果找不到这个文件,用find / -name httpd.conf命令找一下,Vesta环境下也可能在/usr/local/apache/conf/httpd.conf
  2. 在文件里找这几个参数,没有的话就手动添加:
    • Timeout 900:这个是Apache的核心超时时间,直接改成900
    • KeepAliveTimeout 120:保持连接的超时时间,也适当改长点
    • ProxyTimeout 900:如果你的站点用了反向代理,这个也要改,不然代理层会先超时
  3. 保存文件后,重启Apache服务生效:
    systemctl restart httpd
    

二、调整Vesta站点级的Apache配置(避免被面板覆盖)

Vesta会给每个站点生成单独的配置文件,可能会覆盖全局设置,所以要检查一下:

  1. 找到你的站点配置文件,路径一般是/home/[你的用户名]/conf/web/[你的域名].conf,比如你是admin用户,域名是example.com,那就是:
    vi /home/admin/conf/web/example.com.conf
    
  2. 检查文件里有没有Timeout相关的设置,如果有就改成900,没有的话在合适位置加上Timeout 900
  3. 保存后再次重启Apache

三、修改PHP的全局配置(彻底替代脚本里的ini_set)

脚本里的ini_set经常会被服务器全局配置覆盖,所以直接改PHP的全局配置文件:

  1. 先找到你的PHP配置文件路径,执行命令:
    php -i | grep php.ini
    
    输出里的Loaded Configuration File就是你要改的文件路径,比如/etc/php.ini
  2. 打开这个文件,找到以下参数并修改:
    • max_execution_time = 900:PHP脚本的最大执行时间
    • max_input_time = 900:接收用户输入的超时时间,生成报表可能需要接收大量数据,也改长
    • memory_limit = 512M:大型报表生成很占内存,建议从默认的128M改成512M或者更大
  3. 保存后,根据你的PHP运行方式重启服务:
    • 如果是用mod_php(Apache直接运行PHP),重启Apache就行
    • 如果是用PHP-FPM,执行systemctl restart php-fpm(如果是特定版本,比如PHP7.4就是systemctl restart php74-fpm)

四、(可选)用Vesta面板可视化操作

如果你怕命令行出错,也可以直接在Vesta面板里改:

  1. 登录Vesta面板,进入「Web」模块
  2. 找到你的站点,点击「Edit」(编辑)按钮
  3. 切换到「Advanced Options」或者「PHP Settings」标签:
    • 在Apache设置里添加Timeout 900
    • 在PHP设置里把max_execution_time改成900,同时调整memory_limit
  4. 保存设置,面板会自动重启相关服务

五、验证配置是否生效

写个简单的测试脚本验证一下:

  1. 在你的网站根目录创建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>";
    ?>
    
  2. 通过浏览器访问这个文件,如果能正常显示结束时间和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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:59:12