2011-07-19 10 views
5

मैं यह समझने की कोशिश कर रहा हूं कि php का सामग्री-लंबाई शीर्षलेख ओवरराइट क्यों हो जाता है। यह demo.phpphp से सामग्री-लंबाई शीर्षलेख ओवरराइट किया गया है!

<?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 बाइट्स पर अधिकतम है, जो 2 जीबी है।

अब यदि ऐसा है तो

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

तरह demo.php संशोधित हैडर ओवरराइट नहीं कर रहा है।

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 

यहाँ मॉड्यूल लोड

[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 

यहाँ एक phpinfo() दिए गए हैं: http://pastehtml.com/view/b0z02p8zc.html

अपाचे 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 -एक

है
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 

आशा है कि कोई मदद कर सकता है!

चियर्स

+0

यह अभी भी एक 32 बिट पीएचपी के साथ एक 32 बिट अपाचे है के लिए धन्यवाद - PHP के एक हस्ताक्षरित 32 बिट पूर्णांक, इसलिए काट-छांट में अपने bigint काटने। –

+0

बस एक अनुमान: PHP स्वचालित रूप से इस हेडर को ओवरराइड करता है। संभवतः आप 32 बिट सिस्टम का उपयोग करते हैं, इसलिए PHP बड़े पूर्णांक के साथ काम करने में असमर्थ है। – Karolis

उत्तर

0

int करने के लिए

+0

हाँ मुझे ऐसा कुछ मिला: https://bugs.php.net/bug.php?id=51723 – Michael

0

हाँ, यह निश्चित रूप से एक 32 बिट बात है php डाली सामग्री-लंबाई की तरह लगता है। खैर, मैं PHP, recompile या कुछ tweak नहीं करना चाहता, इसलिए समय के लिए, मैं फ़ाइल आकार की जांच करूँगा, और यदि यह 2 जीबी से अधिक है, तो मैं हेडर नहीं भेज रहा हूं।

आप सभी अपने इनपुट

संबंधित मुद्दे