ขออภัยคำตอบของ @EatOng ที่นี่ไม่ถูกต้องไม่ถูกต้องหลังจากอ่านคำตอบของเขาฉันได้เพิ่มตัวแปรจำลองให้กับคำขอ AJAX ทุกรายการที่ฉันกำลังเริ่มทำงาน (แม้ว่าบางส่วนจะมีฟิลด์อยู่แล้วก็ตาม) เพื่อให้แน่ใจว่าข้อผิดพลาดจะไม่ปรากฏขึ้น
แต่ตอนนี้ฉันเจอข้อผิดพลาดเดียวกันจาก PHP ฉันยืนยันอีกครั้งว่าฉันได้ส่งข้อมูล POST ไปแล้ว (ช่องอื่น ๆ พร้อมกับตัวแปรจำลองด้วย) รุ่น PHP 5.6.25, always_populate_raw_post_dataค่าถูกตั้งค่าให้0ค่าถูกตั้งค่าให้
นอกจากนี้ในขณะที่ฉันส่งapplication/jsonคำขอ PHP จะไม่เติมข้อมูลให้$_POSTแต่ฉันต้องไปjson_decode()ที่เนื้อหาคำขอ POST แบบดิบซึ่งเข้าถึงได้โดยphp://input.
ดังคำตอบโดย @ rr- อ้างอิง
  0 / ปิด / อะไรก็ตาม: พฤติกรรม BC (เติมข้อมูลหากไม่ได้ลงทะเบียนชนิดเนื้อหาหรือวิธีการร้องขอเป็นวิธีอื่นที่ไม่ใช่ POST )
เนื่องจากวิธีการขอเป็น POST อย่างแน่นอนฉันเดาว่า PHP ไม่รู้จัก / ชอบไฟล์ Content-Type: application/jsonคำขอ (อีกแล้วทำไม ??)
ตัวเลือกที่ 1:
แก้ไขphp.iniไฟล์ด้วยตนเองและตั้งค่าตัวแปรผู้ร้ายเป็น-1ตามที่หลาย ๆ คำตอบแนะนำ
ตัวเลือก 2:
นี่คือบั๊ก PHP 5.6 อัปเกรด PHP
ตัวเลือก 3:
ตามที่ @ user9541305 ตอบไว้ที่นี่การเปลี่ยนContent-Typeคำขอ AJAX เป็นapplication/x-www-form-urlencodedหรือmultipart/form-dataจะทำให้ PHP เติมข้อมูล$_POSTจากเนื้อหา POSTed (เพราะ PHP ชอบ / รู้จักcontent-typeส่วนหัวเหล่านั้น!?)
ตัวเลือกที่ 4: รีสอร์ทสุดท้าย
ฉันไม่ต้องการเปลี่ยนContent-TypeAJAX มันจะทำให้เกิดปัญหามากในการดีบั๊ก (Chrome DevTools ดูตัวแปร POSTed ของคำขอ JSON เป็นอย่างดี)
ฉันกำลังพัฒนาสิ่งนี้สำหรับลูกค้าและไม่สามารถขอให้พวกเขาใช้ PHP ล่าสุดหรือแก้ไขไฟล์ php.ini เป็นทางเลือกสุดท้ายฉันจะตรวจสอบว่าตั้งค่าเป็นหรือไม่0และถ้าเป็นเช่นนั้นให้แก้ไขไฟล์php.iniไฟล์ในสคริปต์ PHP ของฉันเอง แน่นอนฉันจะต้องขอให้ผู้ใช้รีสตาร์ท apache น่าเสียดายจัง!
นี่คือโค้ดตัวอย่าง:
<?php
if(ini_get('always_populate_raw_post_data') != '-1')
{
    // Get the path to php.ini file
    $iniFilePath = php_ini_loaded_file();
    // Get the php.ini file content
    $iniContent = file_get_contents($iniFilePath);
    // Un-comment (if commented) always_populate_raw_post_data line, and set its value to -1
    $iniContent = preg_replace('~^\s*;?\s*always_populate_raw_post_data\s*=\s*.*$~im', 'always_populate_raw_post_data = -1', $iniContent);
    // Write the content back to the php.ini file
    file_put_contents($iniFilePath, $iniContent);
    // Exit the php script here
    // Also, write some response here to notify the user and ask to restart Apache / WAMP / Whatever.
    exit;
}