দুর্ভাগ্যক্রমে, এখানে @ ইটঅং এর উত্তরটি সঠিক নয় । তার উত্তরটি পড়ার পরে আমি যে অজ্যাক অনুরোধটি চালাচ্ছিলাম তার সাথে একটি ডামি ভেরিয়েবল যুক্ত করেছি (তবুও তাদের কিছুটির কিছু ক্ষেত্র আগেও রয়েছে) কেবল ত্রুটিটি কখনই প্রদর্শিত না হয় তা নিশ্চিত করার জন্য।
তবে ঠিক এখনই আমি পিএইচপি থেকে একই জঘন্য ত্রুটিটি পেয়েছি। আমি ডাবল-কনফার্ম করেছি যে আমি কিছু পোষ্ট ডেটা (ডামি ভেরিয়েবলের সাথে কিছু অন্যান্য ক্ষেত্রও) প্রেরণ করেছি। পিএইচপি সংস্করণ 5.6.25, always_populate_raw_post_dataমান সেট করা আছে 0।
এছাড়াও, আমি একটি পাঠাচ্ছি application/jsonঅনুরোধ, পিএইচপি এটি পূর্ণ করা হয় না $_POST, বরং আমাকে করতে হবে json_decode()কাঁচা POST রিকোয়েস্ট শরীর, দ্বারা অ্যাক্সেসযোগ্য php://input।
@ Rr- এর উত্তর হিসাবে,
0 / অফ / যাই হোক না কেন: বিসি আচরণ ( বিষয়বস্তুর ধরণ নিবন্ধিত না থাকলে বা অনুরোধ পদ্ধতি POST ব্যতীত অন্য কোনও ক্ষেত্রে তৈরি করুন )।
কারণ অনুরোধের পদ্ধতিটি অবশ্যই পোস্টের জন্য, আমার ধারণা পিএইচপি আমার Content-Type: application/jsonঅনুরোধটি পছন্দ করে / পছন্দ করে নি (আবার, কেন ??)।
বিকল্প 1:
php.iniফাইলটি ম্যানুয়ালি সম্পাদনা করুন এবং অপরাধীর ভেরিয়েবল সেট করুন -1, যেমন এখানে অনেক উত্তর প্রস্তাবিত করে।
বিকল্প 2:
এটি একটি পিএইচপি 5.6 বাগ। পিএইচপি আপগ্রেড করুন।
বিকল্প 3:
হিসাবে @ user9541305 এখানে বললেন, পরিবর্তন Content-Typeকরার AJAX অনুরোধ এর application/x-www-form-urlencodedবা multipart/form-dataপিএইচপি করতে হবে পূরণ $_POSTপোস্ট শরীর থেকে (কারণ পিএইচপি পছন্দ / ঐ স্বীকৃতি content-typeহেডার !?)।
বিকল্প 4: সর্বশেষ রিসর্ট
ঠিক আছে, আমি Content-Typeএজেএক্সের পরিবর্তনটি চাইনি , এটি ডিবাগিংয়ের জন্য অনেক সমস্যার কারণ হবে। (ক্রোম ডিভলটুলস সুন্দরভাবে জেএসএন অনুরোধগুলির পোস্টের ভেরিয়েবলগুলি দেখুন))
আমি এই ক্লায়েন্টের জন্য এই জিনিসটি বিকাশ করছি এবং তাদের সর্বশেষ পিএইচপি ব্যবহার করতে বা php.ini ফাইল সম্পাদনা করতে বলতে পারি না। একটি সর্বশেষ অবলম্বন হিসাবে, আমি কেবল এটি সেট করা আছে কিনা তা যাচাই করব 0এবং যদি তাই php.iniহয় তবে আমার পিএইচপি স্ক্রিপ্টে নিজেই ফাইলটি সম্পাদনা করুন । অবশ্যই আমি ব্যবহারকারীকে অ্যাপাচি পুনরায় চালু করতে বলব। কি লজ্জা!
এখানে একটি নমুনা কোড রয়েছে:
<?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;
}