Chrome net :: ข้อผิดพลาด ERR_INCOMPLETE_CHUNKED_ENCODING


140

ในช่วงสองเดือนที่ผ่านมาฉันได้รับข้อผิดพลาดต่อไปนี้ในคอนโซลนักพัฒนาซอฟต์แวร์ของ Chrome:

net::ERR_INCOMPLETE_CHUNKED_ENCODING

อาการ:

  • หน้าไม่โหลด
  • ไฟล์ CSS และ JS ที่ถูกตัดทอน
  • หน้าแขวน

สภาพแวดล้อมเซิร์ฟเวอร์:

  • Apache 2.2.22
  • PHP
  • Ubuntu

สิ่งนี้เกิดขึ้นกับฉันบนเซิร์ฟเวอร์ Apache ในบ้านของเรา มันไม่ได้เกิดขึ้นกับใคร - กล่าวคือไม่มีผู้ใช้ของเราที่ประสบปัญหานี้ - และไม่มีใครอยู่ในทีม dev ของเรา

บุคคลอื่นกำลังเข้าถึงเซิร์ฟเวอร์เดียวกันกับ Chrome เวอร์ชันเดียวกันทั้งหมด ฉันได้ลองปิดการใช้งานส่วนขยายทั้งหมดและการเรียกดูในโหมดไม่ระบุตัวตนแล้ว - ก็ไม่มีผล

ฉันใช้ Firefox และสิ่งเดียวกันก็เกิดขึ้น ไฟล์ที่ถูกตัดทอนและไม่มีอะไร สิ่งเดียวคือ Firefox ไม่เพิ่มข้อผิดพลาดคอนโซลดังนั้นคุณต้องตรวจสอบคำขอ HTTP ผ่าน Firebug เพื่อดูปัญหา

คำตอบส่วนหัวจาก Apache:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Mon, 27 Apr 2015 10:52:52 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.10-1ubuntu3.8

ขณะทดสอบฉันสามารถแก้ไขปัญหาได้โดยบังคับให้ HTTP 1.0 ในไฟล์ htaccess ของฉัน:

SetEnv downgrade-1.0

วิธีนี้จะกำจัดปัญหา อย่างไรก็ตามการบังคับ HTTP 1.0 ผ่าน HTTP 1.1 ไม่ใช่วิธีแก้ปัญหาที่เหมาะสม

อัปเดต : เนื่องจากฉันเป็นคนเดียวที่ประสบปัญหานี้ฉันจึงคิดว่าต้องใช้เวลามากขึ้นในการตรวจสอบว่าเป็นปัญหาจากฝั่งไคลเอ็นต์หรือไม่ หากฉันเข้าไปที่การตั้งค่าของ Chrome และใช้ตัวเลือก "คืนค่าเป็นค่าเริ่มต้น" ปัญหาจะหายไปประมาณ 10-20 นาที จากนั้นจะกลับมา


คุณลืมเบรค ถูกต้อง -> while ($ row = mysql_fetch_assoc ($ result))
JustAnotherSimpleProgrammer__

@PHPMan ไม่ได้คัดลอกและวางอย่างถูกต้อง แก้ไขแล้ว ฉันหวังว่านั่นคือสาเหตุ
Wayne Whitty

1
นอกจากนี้จำเป็นต้องทราบว่า HTML ที่สร้างขึ้นโดยรหัสนี้ while($row = mysql_fetch_assoc($result))อาจเป็นบรรทัดว่างมากเกินไปซึ่งทำให้เกิดการตัดทอนโดยเว็บเบราว์เซอร์
Halayem Anis

7
ข้อผิดพลาดนั้นจะเพิ่มขึ้นหากไคลเอ็นต์ไม่ได้รับการถ่ายโอนข้อมูลที่มีความยาวเป็น 0 สุดท้าย ในสถานที่ของคุณฉันจะเปิด Wireshark และจับการรับส่งข้อมูล TCP เพื่อดูว่าเกิดอะไรขึ้น
aergistal

2
ปัญหานี้อาจเกิดจากปัญหาเครือข่ายไม่ใช่ปัญหาแอปพลิเคชัน (โดยเฉพาะอย่างยิ่งเนื่องจากคุณเป็นคนเดียวที่มี) ดังนั้นคุณควรลองใช้เครือข่ายการพิจารณาคดีก่อนเป็นสาเหตุที่เป็นไปได้โดยการตรวจสอบปริมาณการใช้งานตามที่ @aergistal แนะนำ
VolenD

คำตอบ:


80

ตกลง. ฉันได้ทดสอบสิ่งนี้สามครั้งแล้วและฉันมั่นใจ100%ว่ามันเกิดจากแอนตี้ไวรัสของฉัน (ESET NOD32 ANTIVIRUS 5)

เมื่อใดก็ตามที่ฉันปิดใช้งานการป้องกันแบบเรียลไทม์ปัญหาจะหายไป วันนี้ฉันปิดการป้องกันแบบเรียลไทม์เป็นเวลา 6-7 ชั่วโมงและปัญหาไม่เคยเกิดขึ้น

เมื่อสักครู่ที่ผ่านมาฉันเปิดเครื่องอีกครั้งเพื่อให้ปัญหาปรากฏภายในหนึ่งนาทีเท่านั้น

ในช่วง 24 ชั่วโมงที่ผ่านมาฉันได้เปิดและปิดการป้องกันแบบเรียลไทม์อีกครั้งเพื่อให้แน่ใจ แต่ละครั้ง - ผลลัพธ์จะเหมือนกัน

อัปเดต: ฉันเจอนักพัฒนารายอื่นที่มีปัญหาเดียวกันกับการป้องกันแบบเรียลไทม์บนโปรแกรมป้องกันไวรัส Kaspersky ของเขา เขาปิดการใช้งานและปัญหาก็หายไป เช่นปัญหานี้ดูเหมือนจะไม่ จำกัด เฉพาะ ESET


1
เมื่อคุณใช้โปรแกรมป้องกันไวรัสและส่งส่วนหัวความยาวของเนื้อหามันจะใช้งานได้หรือไม่? หากปัญหาคือ Eset + ไปที่เพจของคุณจาก ip ใด ๆ ก็ตามคุณควรแก้ไข การจัดหาส่วนหัวที่มีความยาวของเนื้อหาไม่ทำให้เสียหายอาจมีค่าใช้จ่าย 1 มิลลิวินาทีต่อคำขอ
twicejr

2
จากประสบการณ์อันยาวนานการต่อต้านไวรัสก่อให้เกิดอันตรายมากกว่าผลดี
Shadow Wizard is Ear For You

1
สำหรับใครที่มีปัญหากับ Kaspersky ปัญหานี้เกิดจากฟีเจอร์ "ใส่สคริปต์ลงในการเข้าชมเว็บ" คุณจะพบสิ่งนี้ในการตั้งค่าเครือข่าย
Hele

2
AVAST มีปัญหาเดียวกัน ... แย่มากจนไม่สามารถเข้าชมบางเว็บไซต์ได้อีกต่อไป ฉันปิดการใช้งานการสแกนเว็บและทุกอย่างก็กลับมาทำงานได้ตามปกติ ...
patrick

4
ใช่ Avast ก็เป็นปัญหาสำหรับฉันเช่นกัน โดยเฉพาะตัวScript Scanningเลือกภายใต้ Web Shield
Juha Untinen

47

ข้อผิดพลาดกำลังพยายามบอกว่า Chrome ถูกตัดออกในขณะที่กำลังส่งเพจ ปัญหาของคุณกำลังพยายามหาสาเหตุ

เห็นได้ชัดว่านี่อาจเป็นปัญหาที่ทราบแล้วซึ่งส่งผลกระทบต่อ Chrome สองเวอร์ชัน เท่าที่ฉันสามารถบอกได้มันเป็นปัญหาของเวอร์ชันเหล่านี้ที่มีความอ่อนไหวอย่างมากต่อความยาวเนื้อหาของชิ้นส่วนที่ส่งและขนาดที่แสดงออกของชิ้นนั้น (ฉันอาจจะห่างไกลจากสิ่งนั้น) ในระยะสั้นปัญหาส่วนหัวที่ไม่สมบูรณ์เล็กน้อย

ในทางกลับกันอาจเป็นไปได้ว่าเซิร์ฟเวอร์ไม่ได้ส่งเทอร์มินัลความยาว 0 ob_flush();ซึ่งอาจจะเป็นแน่นอนกับ อาจเป็นไปได้ว่า Chrome (หรือการเชื่อมต่อหรือบางอย่าง) กำลังทำงานช้า ดังนั้นเมื่อปิดการเชื่อมต่อเพจจึงยังไม่โหลด ฉันไม่รู้ว่าทำไมถึงเกิดเหตุการณ์นี้ขึ้น

นี่คือคำตอบของโปรแกรมเมอร์ที่หวาดระแวง:

<?php
    // ... your code
    flush();
    ob_flush();
    sleep(2);
    exit(0);
?>

ในกรณีของคุณอาจเป็นกรณีที่สคริปต์หมดเวลา ฉันไม่แน่ใจจริงๆว่าทำไมมันถึงมีผลกับคุณเพียงคนเดียว แต่มันอาจเป็นไปตามเงื่อนไขการแข่งขันมากมาย? นั่นเป็นการคาดเดาอย่างเต็มที่ คุณควรจะทดสอบสิ่งนี้ได้โดยขยายเวลาเรียกใช้สคริปต์

<?php
    // ... your while code
    set_time_limit(30);
    // ... more while code
?>

นอกจากนี้ยังอาจทำได้ง่ายเพียงแค่อัปเดตการติดตั้ง Chrome ของคุณ (เนื่องจากปัญหานี้เป็นปัญหาเฉพาะของ Chrome)

UPDATE:ฉันก็สามารถที่จะทำซ้ำข้อผิดพลาดนี้ (ที่ผ่านมา) เมื่อมีข้อผิดพลาดร้ายแรงในขณะที่ถูกโยน PHP (ใน localhost เดียวกัน) เป็นบัฟเฟอร์เอาท์พุท ฉันคิดว่าผลลัพธ์ที่ได้นั้นไม่ดีเกินกว่าที่จะใช้ประโยชน์ได้มาก (ส่วนหัว แต่มีเนื้อหาน้อยหรือไม่มีเลย)

โดยเฉพาะอย่างยิ่งฉันบังเอิญมีรหัสของฉันเรียกตัวเองซ้ำ ๆ จนกระทั่ง PHP ถูกต้องยอมแพ้ ดังนั้นเซิร์ฟเวอร์จึงไม่ส่งชิ้นส่วนความยาวเทอร์มินัล 0 - ซึ่งเป็นปัญหาที่ฉันระบุไว้ก่อนหน้านี้


ฉันไม่รู้ แต่สิ่งนี้มีประโยชน์สำหรับฉันจริงๆ: set_time_limit (30);
Zhang Buzz

1
การเพิ่มขีด จำกัด หน่วยความจำช่วยกรณีของฉัน: ini_set ('memory_limit', '500M');
BenK

ปัญหาเกิดขึ้นจริงเมื่อคุณปิดการเชื่อมต่อโดยไม่ได้ล้างการตอบสนอง ซึ่งทำให้ chrome ไม่ได้รับไบต์สุดท้ายของสตรีม ใน vertx ให้ตอบกลับ. end () แทน response.close ()
MUNGAI NJOROGE

31

ฉันมีปัญหานี้ ติดตามหลังจากลองใช้คำตอบอื่น ๆ ส่วนใหญ่เกี่ยวกับคำถามนี้ มันเกิดจากเจ้าของและสิทธิ์ของไดเร็กทอรี/var/lib/nginxและอื่น ๆ โดยเฉพาะ/var/lib/nginx/tmpไม่ถูกต้อง

ไดเร็กทอรี tmp ถูกใช้โดย fast-cgi เพื่อแคชการตอบสนองเมื่อสร้างขึ้น แต่เฉพาะในกรณีที่มีขนาดใหญ่กว่าที่กำหนด ดังนั้นปัญหาจึงเกิดขึ้นไม่ต่อเนื่องและเกิดขึ้นเฉพาะเมื่อการตอบสนองที่สร้างขึ้นมีขนาดใหญ่

ตรวจสอบnginx <host_name>.error_logเพื่อดูว่าคุณมีปัญหาเกี่ยวกับสิทธิ์หรือไม่

ในการแก้ไขตรวจสอบให้แน่ใจว่าเจ้าของและกลุ่มของ/var/lib/nginxและ dirs ย่อยทั้งหมดเป็น nginx


3
เหมือนกันที่นี่chownบน / var / lib / nginx แก้ไขให้ฉัน👍
Yoav Aharoni

2
เหมือนกันที่นี่ แต่การติดตั้ง homebrew ของฉันสร้างไดเร็กทอรี / usr / local / var / run / nginx / fastcgi_temp ที่ฉันต้องให้สิทธิ์ในการอ่าน / เขียน
cjn

ฉันมีปัญหาที่คล้ายกัน แต่ในกรณีของฉันปัญหาสิทธิ์ที่เกี่ยวข้องกับไดเรกทอรีอื่น ๆ : / etc / Nginx / proxy_temp / หลังจากแก้ไขแล้วอย่างน้อยในตอนนี้ปัญหาก็หายไป
Shidersz

ในกรณีของฉันปัญหาดูเหมือนจะเกี่ยวข้องกับใบรับรอง SSL ที่หมดอายุ
dvlcube

18

สิ่งต่อไปนี้ควรแก้ไขสำหรับลูกค้าทุกคน

//Gather output (if it is not already in a variable, use ob_start() and ob_get_clean() )    

// Before sending output:
header('Content-length: ' . strlen($output));

แต่ในกรณีของฉันสิ่งต่อไปนี้เป็นตัวเลือกที่ดีกว่าและแก้ไขได้เช่นกัน:

.htaccess:

php_value opcache.enable 0

1
สิ่งนี้แก้ไขให้ฉันได้จริงๆ ฉันกำลังโหลด PHP ที่สร้างเนื้อหาบน divs โดย ajax และได้รับข้อผิดพลาด Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING 2 ครั้งจาก 3 เมื่อไฟล์มีขนาดมากกว่า 2MB การเพิ่มความยาวของเนื้อหาช่วยแก้ปัญหาของฉัน ขอบคุณ!
Adrian P.

โซลูชันนี้ใช้ได้ผลสำหรับเราโดยมีไซต์ที่เชิงมุมอ่าน json ... ในกรณีของเราคือ php_flag opcache เปิดใช้งานปิดใน. htaccess เรารู้ว่ามันไม่เกี่ยวข้องกับโปรแกรมป้องกันไวรัสเพราะแม้แต่บน Mac เราก็มีปัญหานี้ ขอบคุณ!!
danielgc

เยี่ยมมาก :) เว็บเซิร์ฟเวอร์ใช้ PHP 5.6 หรือไม่? การอัปเกรดเป็น PHP 7 จะช่วยแก้ปัญหาได้เช่นกันฉันคิดว่า อย่างน้อยก็เป็นประสบการณ์ของฉันตอนนี้!
twicejr

นี้ ^ ^ ^ เป็นพันเท่านี้! ฉันพบปัญหานี้ในไซต์ Drupal 8 ที่เรากำลังพัฒนา ทันทีที่ฉันตั้งค่าให้รวม CSS และ JS มันก็เริ่มมีปัญหาในการโหลดหน้าผู้ดูแลระบบใน Chrome ไม่มีปัญหาใน Firefox
Andrew Wasson

วิธีการทำในแอปพลิเคชันที่ใช้ jsp-servlet ที่ติดตั้งบนเซิร์ฟเวอร์ Tomcat
Shubham Arya

14

โอ้พระเจ้าฉันแก้ปัญหาเดียวกันเมื่อ 5 นาทีที่แล้ว ฉันใช้เวลาหลายชั่วโมงเพื่อหาทางแก้ไข เมื่อแรกเห็นการปิดใช้งานโปรแกรมป้องกันไวรัสแก้ไขปัญหาบน Windows แต่แล้วฉันก็สังเกตเห็นปัญหาใน linux pc เครื่องอื่นที่ไม่มีโปรแกรมป้องกันไวรัส ไม่มีข้อผิดพลาดในบันทึก nginx ของฉันuwsgiแสดงบางอย่างเกี่ยวกับ "ท่อแตก" แต่ไม่ใช่ในคำขอทั้งหมด รู้อะไร? ไม่มีพื้นที่เหลือบนอุปกรณ์ซึ่งฉันพบเมื่อรีสตาร์ทเซิร์ฟเวอร์ในบันทึกฐานข้อมูลและdfอนุมัติสิ่งนี้ มีเพียงคำอธิบายเกี่ยวกับสาเหตุที่โปรแกรมป้องกันไวรัสได้รับการแก้ไขสิ่งนี้คือป้องกันการแคชเบราว์เซอร์ (ควรตรวจสอบทุกคำขอ) แต่เบราว์เซอร์ที่มีพฤติกรรมแปลก ๆ สามารถเพิกเฉยต่อการตอบสนองที่ไม่ดีและแสดงการตอบกลับที่แคช


1
ได้พบกับปัญหานี้ในช่วง 24 ชั่วโมงที่ผ่านมาคุณช่วยฉันได้จริงๆ เป็นเพราะพาร์ติชันรูทแบบเต็มมันอยู่ในการติดตั้ง django ของฉันบันทึก pgbouncer เต็มพาร์ติชันรูท Thanks man
Anoop Ar

ช่วยฉันไว้! พาร์ติชันรูทของฉันเต็มและได้รับผลกระทบ nginx ด้วย
chrismarx

6

ในกรณีของฉันฉันพบ/usr/local/var/run/nginx/fastcgi_temp/3/07/0000000073" failed (13: Permission denied)ซึ่งอาจเป็นผลให้เกิดข้อผิดพลาด Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING

ฉันต้องลบ/usr/local/var/run/nginx/และปล่อยให้ nginx สร้างอีกครั้ง

$ sudo rm -rf /usr/local/var/run/nginx/
$ sudo nginx -s stop
$ sudo mkdir /usr/local/var/run/nginx/
$ sudo chown nobody:nobody /usr/local/var/run/nginx/
$ sudo nginx

4

เป็นที่ทราบกันดีว่าปัญหาของ Chrome ตามเครื่องมือติดตามข้อบกพร่องของ Chrome และ Chromium ไม่มีวิธีแก้ปัญหาแบบสากลสำหรับสิ่งนี้ ปัญหานี้ไม่เกี่ยวกับประเภทเซิร์ฟเวอร์และเวอร์ชัน แต่อยู่ใน Chrome

กำลังตั้งค่าContent-Encodingส่วนหัวเพื่อidentityแก้ไขปัญหานี้ให้ฉัน

จากdeveloper.mozilla.org

เอกลักษณ์ | ระบุฟังก์ชันเอกลักษณ์ (เช่นไม่มีการบีบอัดหรือปรับเปลี่ยน)

ดังนั้นฉันสามารถแนะนำได้ว่าในบางกรณี Chrome ไม่สามารถทำการบีบอัด gzip ได้อย่างถูกต้อง


4

วิธีแก้ปัญหาที่ง่ายที่สุดคือการเพิ่ม proxy_read_timeout สำหรับตำแหน่งพร็อกซีที่ตั้งไว้ของคุณเป็นค่าที่สูงขึ้น (เช่น 120 วินาที) ใน nginx.conf ของคุณ

location / {
....
proxy_read_timeout 120s
....
}

ฉันพบวิธีแก้ปัญหานี้ที่นี่ https://rijulaggarwal.wordpress.com/2018/01/10/atmosphere-long-polling-on-nginx-chunked-encoding-error/


โปรดให้บริบทเพิ่มเติมเกี่ยวกับเวลาที่จะเกิดขึ้นแทนที่จะคัดลอกจากไซต์อื่น
Akaisteph7

3

ฉันแค่จ้องมองว่ามีปัญหาที่คล้ายกัน และสังเกตเห็นว่ามันเกิดขึ้นเฉพาะเมื่อเพจมีอักขระ UTF-8 ที่มีค่าลำดับมากกว่า 255 (เช่นหลายไบต์)

สิ่งที่เป็นปัญหาคือวิธีคำนวณส่วนหัวความยาวของเนื้อหา แบ็กเอนด์พื้นฐานคือการคำนวณความยาวของอักขระแทนที่จะเป็นความยาวไบต์ การปิดส่วนหัวความยาวเนื้อหาช่วยแก้ปัญหาชั่วคราวจนกว่าฉันจะแก้ไขระบบเทมเพลตส่วนหลังได้


3

เมื่อฉันพบข้อผิดพลาดนี้ (ขณะทำการโทร AJAX จากจาวาสคริปต์) เหตุผลก็คือการตอบสนองจากคอนโทรลเลอร์ผิดพลาด มันส่งคืน JSON ซึ่งไม่ใช่รูปแบบที่ถูกต้อง


2

นี่คือปัญหา Avast AV ของฉัน ทันทีที่ฉันปิดใช้งานปัญหาก็หายไป

แต่ฉันอยากจะเข้าใจสาเหตุของพฤติกรรมนี้จริงๆ


2

ฉันแค่อยากจะแบ่งปันประสบการณ์ของฉันกับคุณหากใครบางคนอาจมีปัญหาเดียวกันกับMOODLE Moodle

ทันใดนั้นแพลตฟอร์ม moodle ของเราทำงานช้ามากแดชบอร์ดใช้เวลาโหลดนานขึ้นประมาณ 2-3 เท่า (สูงสุด 6 วินาที) จากนั้นตามปกติและบางครั้งบางหน้าก็ไม่โหลดเลย (ไม่ใช่ข้อผิดพลาด 404 แต่เป็นหน้าว่างเปล่า ). ใน Developer Tools Console พบข้อผิดพลาดต่อไปนี้:net::ERR_INCOMPLETE_CHUNKED_ENCODING.

เมื่อค้นหาข้อผิดพลาดนี้ดูเหมือนว่า Chrome จะเป็นปัญหา แต่เราพบปัญหากับเบราว์เซอร์ต่างๆ หลังจากการค้นคว้าและเปรียบเทียบฐานข้อมูลหลายชั่วโมงก่อนที่ฉันจะพบปัญหาในที่สุดก็มีคนเปิดการตรวจสอบเหตุการณ์ อย่างไรก็ตามในบันทึก "กำหนดค่าการเปลี่ยนแปลง" การเปลี่ยนแปลงนี้ไม่ปรากฏให้เห็น! การปิดการตรวจสอบเหตุการณ์ในที่สุดก็แก้ปัญหาได้ - เราไม่มีกฎที่กำหนดไว้สำหรับการตรวจสอบเหตุการณ์

เรากำลังใช้งาน Moodle 3.1.2+ ด้วย MariaDB และ PHP 5.4


2

สิ่งนี้เกิดขึ้นกับเซิร์ฟเวอร์ของไคลเอนต์สองเครื่องที่แตกต่างกันโดยแยกกันเป็นเวลาหลายปีโดยใช้รหัสเดียวกันกับที่ติดตั้งบนเซิร์ฟเวอร์อื่น ๆ นับร้อยในช่วงเวลานั้นโดยไม่มีปัญหา

สำหรับไคลเอนต์เหล่านี้ส่วนใหญ่เกิดขึ้นกับสคริปต์ PHP ที่มีการสตรีม HTML นั่นคือหน้า "Connection: close" ที่เอาต์พุตถูกส่งไปยังเบราว์เซอร์เมื่อเอาต์พุตพร้อมใช้งาน

ปรากฎว่าการเชื่อมต่อระหว่างกระบวนการ PHP และเว็บเซิร์ฟเวอร์หยุดลงก่อนเวลาอันควรก่อนที่สคริปต์จะเสร็จสมบูรณ์และก่อนที่จะหมดเวลา

ปัญหาคือ opcache.fast_shutdown = 1 ในไฟล์ php.ini หลัก คำสั่งนี้ถูกปิดใช้งานโดยค่าเริ่มต้น แต่ดูเหมือนว่าผู้ดูแลระบบเซิร์ฟเวอร์บางคนเชื่อว่ามีการเพิ่มประสิทธิภาพที่นี่ ในการทดสอบทั้งหมดของฉันฉันไม่เคยสังเกตเห็นความแตกต่างเชิงบวกโดยใช้การตั้งค่านี้ จากประสบการณ์ของฉันมันทำให้สคริปต์บางตัวทำงานช้าลงจริง ๆ และมีประวัติที่น่ากลัวว่าบางครั้งเข้าสู่การปิดระบบในขณะที่สคริปต์ยังคงทำงานอยู่หรือแม้กระทั่งเมื่อสิ้นสุดการดำเนินการในขณะที่เว็บเซิร์ฟเวอร์ยังคงอ่านจากบัฟเฟอร์ มีรายงานข้อผิดพลาดเก่าจากปี 2013 ซึ่งยังไม่ได้รับการแก้ไข ณ เดือนกุมภาพันธ์ 2017 ซึ่งอาจเกี่ยวข้อง: https://github.com/zendtech/ZendOptimizerPlus/issues/146

ฉันเห็นข้อผิดพลาดต่อไปนี้ปรากฏขึ้นเนื่องจาก ERR_INCOMPLETE_CHUNKED_ENCODING ERR_SPDY_PROTOCOL_ERROR บางครั้งมีการบันทึกค่าความสัมพันธ์ที่สัมพันธ์กัน บางครั้งก็ไม่

หากคุณพบอย่างใดอย่างหนึ่งให้ตรวจสอบ phpinfo ของคุณและตรวจสอบให้แน่ใจว่าปิดใช้งาน opcache.fast_shutdown


1

ฉันขอโทษที่ต้องบอกว่าฉันไม่มีคำตอบที่ชัดเจนสำหรับคุณ แต่ฉันก็พบปัญหานี้เช่นกันและอย่างน้อยก็ในกรณีของฉันพบวิธีแก้ปัญหา ดังนั้นบางทีมันอาจจะให้เบาะแสแก่คนอื่นที่รู้เพิ่มเติมเกี่ยวกับ Php ภายใต้ประทุน

สถานการณ์คือฉันมีอาร์เรย์ที่ส่งผ่านไปยังฟังก์ชัน เนื้อหาของอาร์เรย์นี้ถูกใช้เพื่อสร้างสตริง HTML เพื่อส่งกลับไปยังเบราว์เซอร์โดยวางทั้งหมดไว้ในตัวแปรส่วนกลางที่พิมพ์ในภายหลัง (ฟังก์ชั่นนี้ไม่ได้ส่งคืนอะไรเลยฉันรู้ว่าเลอะเทอะ แต่นั่นอยู่ข้างจุด) ภายในอาร์เรย์นี้มีองค์ประกอบสองสามอย่างที่มีอาร์เรย์เชื่อมโยงซ้อนกันโดยการอ้างอิงซึ่งกำหนดไว้นอกฟังก์ชันนี้ . จากกระบวนการกำจัดฉันพบว่ามีการจัดการองค์ประกอบใด ๆ ภายในอาร์เรย์นี้ภายในฟังก์ชันที่อ้างถึงหรือไม่รวมถึงความพยายามที่จะยกเลิกการตั้งค่าองค์ประกอบที่อ้างอิงเหล่านั้นส่งผลให้ Chrome โยนข้อผิดพลาด net :: ERR_INCOMPLETE_CHUNKED_ENCODING และไม่แสดงเนื้อหา

เพียงแค่ปรับแต่งสคริปต์ใหม่เพื่อไม่ใช้การอ้างอิงกับองค์ประกอบอาร์เรย์ในตอนแรกสิ่งต่าง ๆ ก็เริ่มทำงานได้ตามปกติอีกครั้ง ฉันสงสัยว่านี่เป็นข้อบกพร่องของ Php ที่มีบางอย่างเกี่ยวข้องกับการมีอยู่ขององค์ประกอบที่อ้างอิงซึ่งทำให้ส่วนหัวความยาวเนื้อหาออกไป แต่ฉันไม่รู้เรื่องนี้มากพอที่จะพูดได้อย่างแน่นอน


ฉันมีประสบการณ์ที่คล้ายกันกับข้อความแสดงข้อผิดพลาดนี้ แต่ฉันพบว่ามีข้อผิดพลาดในรหัสของฉันซึ่งน่าจะสะดุดข้อผิดพลาดหน่วยความจำไม่เพียงพอแม้ว่าฉันอาจไม่ได้ใช้หน่วยความจำเพิ่มเติมใด ๆ ในการเรียกซ้ำ อย่างไรก็ตามฉันคิดว่า PHP ตายอย่างเงียบ ๆ โดยไม่ต้องล้างบัฟเฟอร์เอาต์พุตและไม่สร้างข้อผิดพลาดของ PHP
muz the ax

1

ฉันมีปัญหากับไซต์ใน Chrome และ Firefox ถ้าฉันปิด Avast Web Shield มันก็หายไป ดูเหมือนว่าฉันจะจัดการให้มันทำงานร่วมกับ Web Shield ที่ทำงานได้โดยการเพิ่ม html5 สำเร็จรูป htaccess บางตัวในไฟล์ htaccess ของฉัน:

# ------------------------------------------------------------------------------
# | Expires headers (for better cache control)                                 |
# ------------------------------------------------------------------------------

# The following expires headers are set pretty far in the future. If you don't
# control versioning with filename-based cache busting, consider lowering the
# cache time for resources like CSS and JS to something like 1 week.

<IfModule mod_expires.c>

    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"

  # CSS
    ExpiresByType text/css                              "access plus 1 week"

  # Data interchange
    ExpiresByType application/json                      "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
    ExpiresByType text/xml                              "access plus 0 seconds"

  # Favicon (cannot be renamed!)
    ExpiresByType image/x-icon                          "access plus 1 week"

  # HTML components (HTCs)
    ExpiresByType text/x-component                      "access plus 1 month"

  # HTML
    ExpiresByType text/html                             "access plus 0 seconds"

  # JavaScript
    ExpiresByType application/javascript                "access plus 1 week"

  # Manifest files
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"

  # Media
    ExpiresByType audio/ogg                             "access plus 1 month"
    ExpiresByType image/gif                             "access plus 1 month"
    ExpiresByType image/jpeg                            "access plus 1 month"
    ExpiresByType image/png                             "access plus 1 month"
    ExpiresByType video/mp4                             "access plus 1 month"
    ExpiresByType video/ogg                             "access plus 1 month"
    ExpiresByType video/webm                            "access plus 1 month"

  # Web feeds
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"

  # Web fonts
    ExpiresByType application/font-woff                 "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
    ExpiresByType application/x-font-ttf                "access plus 1 month"
    ExpiresByType font/opentype                         "access plus 1 month"
    ExpiresByType image/svg+xml                         "access plus 1 month"

</IfModule>

# ------------------------------------------------------------------------------
# | Compression                                                                |
# ------------------------------------------------------------------------------

<IfModule mod_deflate.c>

    # Force compression for mangled headers.
    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>

    # Compress all output labeled with one of the following MIME-types
    # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
    #  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
    #  as `AddOutputFilterByType` is still in the core directives).
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE application/atom+xml \
                                      application/javascript \
                                      application/json \
                                      application/rss+xml \
                                      application/vnd.ms-fontobject \
                                      application/x-font-ttf \
                                      application/x-web-app-manifest+json \
                                      application/xhtml+xml \
                                      application/xml \
                                      font/opentype \
                                      image/svg+xml \
                                      image/x-icon \
                                      text/css \
                                      text/html \
                                      text/plain \
                                      text/x-component \
                                      text/xml
    </IfModule>

</IfModule>

# ------------------------------------------------------------------------------
# | Persistent connections                                                     |
# ------------------------------------------------------------------------------

# Allow multiple requests to be sent over the same TCP connection:
# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.

# Enable if you serve a lot of static content but, be aware of the
# possible disadvantages!

 <IfModule mod_headers.c>
    Header set Connection Keep-Alive
 </IfModule>

1

การแก้ไขของฉันคือ:

<?php  ob_start(); ?>
<!DOCTYPE html>
<html lang="de">
.....
....//your whole code
....
</html>
<?php
        ob_clean();
ob_end_flush();

ob_flush();

?>

หวังว่านี่จะช่วยใครบางคนได้ในอนาคตและในกรณีของฉันมันเป็นปัญหา Kaspersky แต่การแก้ไขข้างต้นใช้งานได้ดี :)


1

ในกรณีของฉันมันเกิดขึ้นในระหว่างการทำให้เป็นอนุกรม json ของเพย์โหลดของ web api return - ฉันมีการอ้างอิง 'แบบวงกลม' ในแบบจำลอง Entity Framework ของฉันฉันกำลังส่งคืนกราฟวัตถุแบบหนึ่งต่อหลายอย่างง่าย ๆ กลับมา แต่เด็กมีการอ้างอิงกลับไปที่ ผู้ปกครองซึ่งเห็นได้ชัดว่าเครื่องอนุกรม json ไม่ชอบ การลบคุณสมบัติบนเด็กที่อ้างถึงพาเรนต์นั้นเป็นการหลอกลวง

หวังว่านี่จะช่วยคนที่อาจมีปัญหาคล้ายกัน


1

ตรวจสอบสิทธิ์โฟลเดอร์ nginx และตั้งค่าสิทธิ์ appache สำหรับสิ่งนั้น:

chown -R www-data:www-data /var/lib/nginx

1

ฉันได้รับ net::ERR_INCOMPLETE_CHUNKED_ENCODINGจากการตรวจสอบบันทึกข้อผิดพลาดของเซิร์ฟเวอร์อย่างใกล้ชิดฉันพบว่าเกิดจากการหมดเวลาการดำเนินการสคริปต์ PHP

การเพิ่มบรรทัดนี้ที่ด้านบนของสคริปต์ PHP ช่วยแก้ปัญหาให้ฉัน:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

อ้างถึงข้อผิดพลาดร้ายแรง: เกินเวลาดำเนินการสูงสุด 30 วินาที



1

สิ่งนี้เกิดขึ้นกับฉันด้วยเหตุผลที่แตกต่างกันโดยสิ้นเชิง net :: ERR_INCOMPLETE_CHUNKED_ENCODING 200 เมื่อฉันตรวจสอบเพจและไปที่แท็บ newtork ฉันพบว่าไม่สามารถโหลดเพจ vendor.js ได้ เมื่อตรวจสอบดูเหมือนว่าขนาดของไฟล์ js จะใหญ่ ~ 6.5 mb นั่นคือตอนที่ฉันรู้ว่าฉันต้องการบีบอัด js ฉันตรวจสอบว่าฉันใช้ng buildคำสั่งในการสร้าง แต่เมื่อฉันใช้ng build --prod --aot --vendor-chunk --common-chunk --delete-output-path --buildOptimizerมันได้ผลสำหรับฉันดูhttps://github.com/angular/angular-cli/issues/9016


0

ดี. ไม่นานมานี้ยังเจอคำถามนี้ และในที่สุดฉันก็จะได้รับแนวทางแก้ไขปัญหานี้

อาการปัญหาของฉันคือหน้าเว็บไม่โหลดและพบว่าข้อมูล json ถูกตัดแบบสุ่ม

นี่คือวิธีแก้ปัญหาที่ฉันสรุปแล้วสามารถช่วยแก้ปัญหานี้ได้

1.Kill the anti-virus software process
2.Close chrome's Prerendering Instant pages feature
3.Try to close all the apps in your browser
4.Try to define your Content-Length header
  <?php
     header('Content-length: ' . strlen($output));
  ?>
5.Check your nginx fastcgi buffer is right 
6.Check your nginx gzip is open

0

หากมีการวนซ้ำหรือรายการใด ๆ ที่ไม่มีอยู่แสดงว่าคุณประสบปัญหานี้

เมื่อเรียกใช้แอปบน Chrome หน้าจะว่างเปล่าและไม่ตอบสนอง

สถานการณ์เริ่มต้น:

Dev Environment: MAC, STS 3.7.3, tc Pivotal Server 3.1, Spring MVC Web,

ใน $ {myObj.getfName ()}

สิ้นสุดสถานการณ์:

สาเหตุของปัญหา: ฟังก์ชัน getfName () ไม่ได้กำหนดไว้ใน myObj

หวังว่ามันจะช่วยคุณ


0

ฉันเดาว่าเซิร์ฟเวอร์ไม่สามารถจัดการกับการเข้ารหัสการถ่ายโอนแบบกลุ่มได้อย่างถูกต้อง จำเป็นต้องเทอร์มินัลไฟล์ที่เป็นก้อนด้วยเทอร์มินัลเพื่อระบุว่าไฟล์ทั้งหมดถูกถ่ายโอนแล้วดังนั้นรหัสด้านล่างอาจใช้งานได้:

echo "\n";
flush();
ob_flush();
exit(0);

0

ในกรณีของฉันมันเสีย config สำหรับ mysqlnd_ms php extension บนเซิร์ฟเวอร์ สิ่งที่ตลกคือมันทำงานได้ดีกับคำขอที่มีระยะเวลาสั้น ๆ มีคำเตือนในบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ดังนั้นเราจึงได้แก้ไขอย่างรวดเร็ว


0

ดูเหมือนว่าจะเป็นปัญหาทั่วไปที่มีหลายสาเหตุและวิธีแก้ไขดังนั้นฉันจะให้คำตอบที่นี่สำหรับทุกคนที่อาจต้องการ

ฉันได้รับ net::ERR_INCOMPLETE_CHUNKED_ENCODINGใช้ Chrome, osx, php70, httpd24 รวมกัน แต่โค้ดเดียวกันทำงานได้ดีบนเซิร์ฟเวอร์ที่ใช้งานจริง

ตอนแรกฉันเทลบันทึกปกติ แต่ไม่มีอะไรปรากฏขึ้น การls -laterแสดงอย่างรวดเร็วsystem.logคือไฟล์สัมผัสล่าสุดใน/var/logและการปรับแต่งที่ให้ฉัน

Saved crash report for httpd[99969] version 2.4.16 (805) 
to /Library/Logs/DiagnosticReports/httpd.crash

บรรจุอยู่ภายใน:

Process:               httpd [99974]
Path:                  /usr/sbin/httpd
Identifier:            httpd
Version:               2.4.16 (805)
Code Type:             X86-64 (Native)
Parent Process:        httpd [99245]
Responsible:           httpd [99974]
User ID:               70

PlugIn Path:             /usr/local/opt/php70-mongodb/mongodb.so
PlugIn Identifier:       mongodb.so

A brew uninstall php70-mongodbและhttpd -k restartหลังจากนั้นและทุกอย่างก็ราบรื่น


0

ในกรณีของฉันมันเป็นปัญหาของ html มี '\ n' ในการตอบสนองของ json ที่ทำให้เกิดปัญหา ผมจึงลบสิ่งนั้นออกไป


0

ที่น่าสนใจเพื่อดูว่ามีสาเหตุหลายประการสำหรับปัญหานี้!

หลายคนบอกว่าเป็นปัญหาของ Chrome ดังนั้นฉันจึงลองใช้ Safari แล้ว แต่ก็ยังมีปัญหา จากนั้นลองใช้วิธีแก้ปัญหาทั้งหมดในหัวข้อนี้รวมถึงการปิด AVG Realtime Protection ของฉันไม่มีโชค

สำหรับฉันปัญหาคือ.htaccessไฟล์ของฉัน ทั้งหมดที่มีอยู่FallbackResource index.phpแต่เมื่อฉันเปลี่ยนชื่อเป็นhtaccess.txtปัญหาของฉันได้รับการแก้ไข


1
อะไรกัน ... ? ฉันก็มีเหมือนกัน ... แต่ถ้าเปลี่ยนชื่อไปhtaccess.txtแล้วมันจะใช้ไม่ได้อีกหรือ?

แม่นยำ. คำถามที่ดีกว่าคือเหตุใด index.php จึงมีข้อผิดพลาดในการจัดการ และเหตุใดจึงทำให้เกิดสิ่งนี้?
musicin3d

0

อืมฉันเพิ่งสะดุดกับปัญหาที่คล้ายกัน แต่มีเหตุผลที่แตกต่างกัน ...

ฉันใช้Laravel นำรถไปจอดในโครงการวานิลลา PHP กับLaravel ผสม เมื่อฉันเปิดไซต์ใน Chrome มีnet::ERR_INCOMPLETE_CHUNKED_ENCODINGข้อผิดพลาดเกิดขึ้น (หากฉันโหลดไซต์ด้วยโปรโตคอล HTTPS ข้อผิดพลาดจะเปลี่ยนเป็นnet::ERR_SPDY_PROTOCOL_ERROR)

ฉันตรวจสอบphp.iniและopcacheไม่ได้เปิดใช้งาน ฉันพบว่าในกรณีของฉันปัญหาเกี่ยวข้องกับการกำหนดเวอร์ชันของไฟล์เนื้อหา - ด้วยเหตุผลบางประการดูเหมือนว่าจะไม่ชอบสตริงการสืบค้นใน URL ของเนื้อหา (ดีผิดปกติเพียงพอเพียงอย่างเดียวหรือไม่)

ฉันได้ลบออกmix.version()เนื่องจากสภาพแวดล้อมในพื้นที่และไซต์โหลดได้ดีใน Chrome ของฉันทั้งบนโปรโตคอล HTTP และ HTTPS


0

ในบริบทของคอนโทรลเลอร์ใน Drupal 8 (Symfony Framework) โซลูชันนี้ใช้ได้กับฉัน:

$response = new Response($form_markup, 200, array(
  'Cache-Control' => 'no-cache',
));

$content = $response->getContent();
$contentLength = strlen($content);
$response->headers->set('Content-Length', $contentLength);

return $response;

มิฉะนั้นส่วนหัวการตอบกลับ "Transfer-Encoding" จะมีค่าเป็น "chunked" นี่อาจเป็นปัญหาสำหรับเบราว์เซอร์ Chrome

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.