首页 > 解决方案 > 当标头很大时,apache 抛出 500

问题描述

我使用 PHP 输出自定义的自定义标头:

//build a long header string
$arr = [];
for($x = 0; $x < 1167; $x++) {
    $arr[] = 'cool';
}
header('x-http-myheader: ' . json_encode($arr));

我有 apache 配置:

LimitRequestBody 0
LimitRequestFields 0
LimitRequestFieldSize 999999
LimitRequestLine 999999

运行 PHP 脚本可以正常工作,除非您递增11671168. 这样做会导致 apache 抛出 500 Internal Server Error 消息:Premature end of script headers: php-cgi.exe

显然这是一个标头大小或文件大小限制,但无论我将 LimitRequestX 设置为什么,一旦标头达到一定大小,Apache 仍然会抛出错误。

如何让 Apache 允许更大的标头?

标签: apacheheader

解决方案


如果这出现在您的 Apache 日志中:

Premature end of script headers: index.php
AH01070: Error parsing script headers
AH01075: Error dispatching request to:

mod_proxy_fcgi 可能有问题:它不接受大小大于 8192 字节的标头。

在这里您可以看到 ASF Bugzilla 中报告的错误:

https://bz.apache.org/bugzilla/show_bug.cgi?id=64919


推荐阅读