दुर्भाग्य से, @EatOng द्वारा यहाँ यह उत्तर सही नहीं है । उनके जवाब को पढ़ने के बाद मैंने हर AJAX अनुरोध में एक डमी वैरिएबल जोड़ा जो मैं फायर कर रहा था (भले ही उनमें से कुछ के पास पहले से ही कुछ क्षेत्र थे) बस यह सुनिश्चित करने के लिए कि त्रुटि कभी प्रकट न हो।
लेकिन अभी मैं PHP से एक ही लानत त्रुटि के पार आया था। मैंने दोहरे पुष्टि की कि मैंने कुछ POST डेटा (कुछ अन्य फ़ील्ड भी डमी चर के साथ) भेजे थे। PHP संस्करण 5.6.25, always_populate_raw_post_dataमान पर सेट है 0।
इसके अलावा, जैसा कि मैं एक application/jsonअनुरोध भेज रहा हूं , PHP इसे करने के लिए $_POSTआबाद नहीं कर रहा है, बल्कि मुझे json_decode()कच्चे POST अनुरोध निकाय द्वारा सुलभ हैं php://input।
@ Rr-cites द्वारा उत्तर के रूप में,
0 / ऑफ / जो भी: बीसी व्यवहार (पॉपुलेट -पंजीकृत नहीं है या अनुरोध विधि POST के अलावा अन्य है )।
क्योंकि अनुरोध विधि निश्चित POST के लिए है, मुझे लगता है कि PHP मेरे Content-Type: application/jsonअनुरोध (फिर, क्यों ??) को नहीं पहचानता / पसंद नहीं करता था ।
विकल्प 1:
php.iniफ़ाइल को मैन्युअल रूप से संपादित करें और अपराधी चर को सेट करें -1, जैसा कि यहां दिए गए कई उत्तर सुझाते हैं।
विकल्प 2:
यह एक PHP 5.6 बग है। PHP अपग्रेड करें।
विकल्प 3:
जैसा कि @ user9541305 ने यहाँ उत्तर दिया है, Content-TypeAJAX के अनुरोध को बदलने application/x-www-form-urlencodedया multipart/form-dataPHP $_POSTको पोस्ट किए गए शरीर से पॉप्युलेट करेगा (क्योंकि PHP उन content-typeहेडर को पहचानता / पहचानता है !?)।
विकल्प 4: अंतिम परिणाम
खैर, मैं Content-TypeAJAX को बदलना नहीं चाहता था , इससे डिबगिंग के लिए बहुत परेशानी होगी। (क्रोम DevTools अच्छी तरह से JSON अनुरोधों के पोस्ट किए गए चर को देखता है।)
मैं एक ग्राहक के लिए यह बात विकसित कर रहा हूं और उन्हें नवीनतम PHP का उपयोग करने के लिए नहीं कह सकता, न ही php.ini फ़ाइल को संपादित करने के लिए। अंतिम उपाय के रूप में, मैं अभी जाँच करूँगा कि क्या यह सेट है 0और यदि ऐसा है, तो php.iniफ़ाइल को अपनी PHP स्क्रिप्ट में ही संपादित करें । बेशक, मुझे उपयोगकर्ता को अपाचे को फिर से शुरू करने के लिए कहना होगा। कितनी शर्म की बात है!
यहाँ एक नमूना कोड है:
<?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;
}