从PHP的内容长度标题被覆盖!

我试图找出为什么PHP的Content-Length头被覆盖。 这是demo.php

<?php header("Content-Length: 21474836470");die; ?> 

请求获取标题

 curl -I http://someserver.com/demo.php HTTP/1.1 200 OK Date: Tue, 19 Jul 2011 13:44:11 GMT Server: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze3 Content-Length: 2147483647 Cache-Control: must-revalidate Content-Type: text/html; charset=UTF-8 

请参阅内容长度? 它最大为2147483647字节,即2GB。

现在,如果修改demo.php像这样

 <?php header("Dummy-header: 21474836470");die; ?> 

标题不会被覆盖。

 HTTP/1.1 200 OK Date: Tue, 19 Jul 2011 13:49:11 GMT Server: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze3 Dummy-header: : 21474836470 Cache-Control: must-revalidate Content-Type: text/html; charset=UTF-8 

这里是加载的模块

 root@pat:/etc/apache2# ls /etc/apache2/mods-enabled/ alias.conf authz_host.load dav_fs.load expires.load php5.conf reqtimeout.load status.conf alias.load authz_user.load dav.load headers.load php5.load rewrite.load status.load auth_basic.load autoindex.conf dav_lock.load mime.conf proxy.conf setenvif.conf authn_file.load autoindex.load dir.conf mime.load proxy_http.load setenvif.load authz_default.load cgi.load dir.load negotiation.conf proxy.load ssl.conf authz_groupfile.load dav_fs.conf env.load negotiation.load reqtimeout.conf ssl.load 

这里是一个phpinfo(): http : //pastehtml.com/view/b0z02p8zc.html

Apache支持超过2GB的文件,因为我没有任何问题直接访问大文件:

 curl -I http://www.someserver.com/somehugefile.zip (5.3 Gig) HTTP/1.1 200 OK Date: Tue, 19 Jul 2011 14:00:25 GMT Server: Apache/2.2.16 (Debian) Last-Modified: Fri, 15 Jul 2011 08:50:22 GMT ETag: "301911-1548e4b11-4a817bd63ef80" Accept-Ranges: bytes Content-Length: 5713578769 Cache-Control: must-revalidate Content-Type: application/zip 

这是一个uname -a

 Linux pat.someserver.com 2.6.38.2-grsec-xxxx-grs-ipv6-32 #1 SMP Fri Apr 15 17:41:28 UTC 2011 i686 GNU/Linux 

希望有人能帮助!

干杯

好像php将Content-length转换为int

是的,这当然是一个32位的东西。 那么我不想调整PHP,重新编译或什么的,所以暂时,我会检查文件的大小,如果超过2GB,我不发送标题。

谢谢大家的意见