Я пытаюсь понять, почему заголовок Content-Length php перезаписывается. Это 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
См. Content-Length? Он высвечивается при 2147483647 байтах, то есть 2 ГБ.
Теперь, если изменить 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 поддерживает файлы более чем на 2 ГБ, так как у меня нет проблем с доступом к большому файлу напрямую:
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 cast Content-length int
Да, это, безусловно, 32-битная вещь. Ну, я не хочу настраивать PHP, перекомпилировать или что-то еще, поэтому пока я проверю размер файла, и если он превышает 2 ГБ, я не отправляю заголовок.
Спасибо всем за ваш вклад