2011-07-19 44 views
5

Neden php'nin Content-Length üstbilgisinin üzerine yazıldığını anlamaya çalışıyorum. Buiçerik uzunluk üstbilgisinin üzerine yazılır!

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

başlıklarını

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 Bkz almak için bir istek demo.php mı? En fazla 2GB olan 2147483647 bayttır. böylece

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

gibi demo.php değiştirirseniz

Şimdi başlık yazılmaz. İşte

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 

modülleri Burada
[email protected]:/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 

bir phpinfo() 'dir yüklenen şunlardır: http://pastehtml.com/view/b0z02p8zc.html

doğrudan büyük bir dosya erişen herhangi bir sorun yok gibi Apache, 2GB üzerinde destek dosyaları yapar : Burada

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 

bir'uname -a

olduğunu
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 

Birisi yardımcı olabilir umarım!

şerefe

+0

için teşekkür ediyorum - PHP en imzalı 32bit int, dolayısıyla kesilmesi halinde bigint kesim. –

+0

Sadece bir tahmin: PHP otomatik olarak bu üstbilgiyi geçersiz kılar. Muhtemelen 32bit sistemi kullanıyorsunuz, bu yüzden PHP daha büyük tamsayılarla çalışamıyor. – Karolis

cevap

0

+0

Evet, öyle bir şey buldum: https://bugs.php.net/bug.php?id=51723 – Michael

0

Evet kesinlikle 32 bit şey int php dökme Content-uzunluk gibi görünüyor. Peki, PHP, yeniden derlemek veya bir şey çimdik istemiyorum, bu yüzden şimdilik, dosya boyutunu kontrol edecek ve eğer 2GB üzerinde ise, ben başlık göndermiyorum.

girişiniz Hala 32bit PHP ile bir 32 bit Apache var

İlgili konular