দুর্ভাগ্যক্রমে, এখানে @ ইটঅং এর উত্তরটি সঠিক নয় । তার উত্তরটি পড়ার পরে আমি যে অজ্যাক অনুরোধটি চালাচ্ছিলাম তার সাথে একটি ডামি ভেরিয়েবল যুক্ত করেছি (তবুও তাদের কিছুটির কিছু ক্ষেত্র আগেও রয়েছে) কেবল ত্রুটিটি কখনই প্রদর্শিত না হয় তা নিশ্চিত করার জন্য।
তবে ঠিক এখনই আমি পিএইচপি থেকে একই জঘন্য ত্রুটিটি পেয়েছি। আমি ডাবল-কনফার্ম করেছি যে আমি কিছু পোষ্ট ডেটা (ডামি ভেরিয়েবলের সাথে কিছু অন্যান্য ক্ষেত্রও) প্রেরণ করেছি। পিএইচপি সংস্করণ 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;
}