`TP HTTP_RAW_POST_DATA` হ্রাস করা হচ্ছে সম্পর্কে সতর্কতা


121

আমি পিএইচপি 5.6.0 এ পরিবর্তন করেছি এবং এখন আমি সর্বত্র নীচের সতর্কতাটি পেয়েছি:

Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will
be removed in a future version. To avoid this warning set
'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream
instead. in Unknown on line 0

Warning: Cannot modify header information - headers already sent in Unknown on line 0

ভাল, আমি কিছু অবমূল্যায়িত বৈশিষ্ট্যের উপর নির্ভর করি। আমি ছাড়া না!

  1. আমি আমার স্ক্রিপ্টগুলির কোনওটিতে এই পরিবর্তনশীলটি ব্যবহার করি নি। সত্যি বলতে কী, এটি সম্পর্কে আমার কোন ধারণা ছিল না।
  2. phpinfo()দেখায় যে আমি always_populate_raw_post_data0 (অক্ষম) তে সেট করেছি । তাই কি ঘটছে?

আমি এই মানটি -1 এ সেট করে "সতর্কতা এড়াতে" চাই না। এটি কেবল সতর্কতাটি আড়াল করবে এবং আমি এখনও কনফিগারেশন অবমূল্যায়ন করব। আমি সমস্যার উত্সটি সমাধান করতে চাই এবং পিএইচপি কেন ভাবছে যে HTTP_RAW_POST_DATAজনবহুল চালু রয়েছে।


একই সমস্যা, কিন্তু সম্ভব বিভিন্ন কারণ / সমাধান: stackoverflow.com/questions/25984623/...
rr-

এই সতর্কতাটি পিএইচপি> = 5.6 এ পিএইচপি সোপ সার্ভারের হ্যান্ডেল () চালানোর সময় আমাকে সমস্যা দেয়। এই সতর্কতাটি সর্বদা এসওএপি-র প্রতিক্রিয়াতে প্রকাশিত হবে, যাতে একটি সাপক্লিয়েন্টের __soapCall () "সোপফল্ট ব্যতিক্রম: [ক্লায়েন্ট] দেখে মনে হচ্ছে যে আমরা কোনও এক্সএমএল নথি পাইনি" ব্যতিক্রম। ডিবাগ করা এত শক্ত কারণ এই সতর্কতাটি সাধারণত প্রদর্শিত হবে না।
জনি ওয়াং

উত্তর:


135

দেখা যাচ্ছে যে ত্রুটি বার্তাটি সম্পর্কে আমার বোঝা ভুল ছিল। আমি বলব এটিতে শব্দগুলির খুব খারাপ পছন্দ রয়েছে। আশেপাশে গুগল করে দেখানো হয়েছে যে আমি অন্য কেউ বার্তাটি ঠিক তেমন ভুল বোঝে - পিএইচপি বাগ # 66763 দেখুন

সম্পূর্ণ অপ্রত্যাশিত হওয়ার পরে "আরএমগণ এটি হতে চেয়েছিল।" মাইকের এই বাগের প্রতিক্রিয়া, টাইরেল ব্যাখ্যা করেছেন যে এটি "-1" এ সেট করা কেবল সতর্কবার্তাটি দূরে সরে যায় না। এটি সঠিক কাজটি করে , অর্থাত্ অপরাধী ভেরিয়েবলকে পপুল করাতে এটি সম্পূর্ণরূপে অক্ষম করে। দেখা যাচ্ছে যে এটি 0 টিতে সেট করা থাকলেও কিছু পরিস্থিতিতে ডেটা জনপ্রিয় হয়। খারাপ ডিজাইনের কথা বলুন! পিএইচপি আরএফসি উদ্ধৃত করার জন্য :

সর্বদা পরিবর্তন_পোপুলেট_রা_পোস্ট_ডেটা আইএনআই সেটিংয়ের পরিবর্তে দুটি পরিবর্তে তিনটি মান গ্রহণ করবে।

  • -1: মাস্টারের আচরণ; ever গ্লোবালস [HTTP_RAW_POST_DATA] কখনও পপুলেট করবেন না
  • 0 / অফ / যাই হোক না কেন: বিসি আচরণ (বিষয়বস্তুর ধরণ নিবন্ধিত না থাকলে বা অনুরোধ পদ্ধতি POST ব্যতীত অন্য কোনও ক্ষেত্রে তৈরি করুন)
  • 1 / অন / হ্যা / সত্য: বিসি আচরণ (সর্বদা ulate গ্লোবালস [HTTP_RAW_POST_DATA] জনবহুল)

হ্যাঁ, এটি -1 এ সেট করা কেবল সতর্কতা এড়ায় না, যেমন বার্তাটি বলেছিল, তবে শেষ পর্যন্ত এটি এই পরিবর্তনশীলটিকে পপুলেশন করতে অক্ষম করে , যা আমি চেয়েছিলাম।


23
tl; ডাঃ এটি একটি বোবা সতর্কতা যা এটির বিরুদ্ধে সতর্ক করা জিনিসটি আপনি ব্যবহার না করলেও উপস্থিত হয়; সেট always_populate_raw_post_data -1
srcspider

7
আমি এটি সেট আছে always_populate_raw_post_data = -1। এখনও এখন সতর্কতাটি আসছে এবং
জেসন

2
সুতরাং কার্যকরভাবে উত্তরটি হ'ল আপনার php.iniফাইলে গিয়ে সেট (বা কোনও অসুবিধা) করা always_populate_raw_post_data = -1
জন

তবে আমি আসলেই পয়েন্টটি পাই না। এটা ঠিক কি সতর্কবার্তা বলছে? To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead.
Andreas

@ আন্দ্রেস বিন্দুটি কেন এটি বলার কারণ, অর্থাৎ ০ এর মধ্যে পার্থক্য, যা স্পষ্টতই "অক্ষম" এবং -১, যা "" শক্তিশালী অক্ষম "? এই প্রশ্নের (এবং উত্তর) → বিভ্রান্তি → কারণ।
rr-

39

আমি এই ত্রুটিটি না আসা পর্যন্ত কিছুক্ষণ হয়ে গেল। যে কেউ এই ইস্যুতে হোঁচট খেতে পারে তার জন্য আমার জবাব দিন।

ত্রুটির অর্থ কেবল আপনি খালি পোষ্ট অনুরোধ পাঠাচ্ছেন। এই ত্রুটিটি সাধারণত কোনও প্যারামিটার ছাড়াই এইচটিটিপিআরকেস্টে পাওয়া যায়। এই ত্রুটিটি এড়াতে, আপনি php.ini পরিবর্তন না করে সর্বদা পোস্টে একটি পরামিতি যুক্ত করতে পারেন।

ভালো লেগেছে:

$.post(URL_HERE
    ,{addedvar : 'anycontent'}
    ,function(d){
       doAnyHere(d);
    }
    ,'json' //or 'html','text'
);

4
এই ইস্যুটির জন্য এটি আমার সেরা উত্তর! আমি এক মাস ধরে এই সমস্যাটি মোকাবিলা করছি এবং এটি আমাকে ভুল দিকে তাকাচ্ছে। আমার কেবল দুর্ঘটনার একটি খালি পোষ্ট ছিল এবং এটি ঠিক হয়ে গেলে সবকিছু দুর্দান্ত কাজ করে! আমাকে ভয়ঙ্কর মাথাব্যথা থেকে বাঁচানোর জন্য ধন্যবাদ!
ক্রেগ হাওল

34

আমি একই সমস্যাটি এনজিএনএক্স সার্ভারে (ডিজিটাল ওশান) অভিজ্ঞতা পেয়েছি - আমাকে যা করতে হয়েছিল তা হ'ল লগ ইন করা rootএবং ফাইলটি সংশোধন করা /etc/php5/fpm/php.ini

always_populate_raw_post_dataআমি প্রথম চালিত রেখার সন্ধান করতে grep:

grep -n 'always_populate_raw_post_data' php.ini

যে লাইন ফিরে 704

704:;always_populate_raw_post_data = -1

তারপরে সম্পাদকের php.iniসাহায্যে কেবল সেই লাইনে খুলুন vi:

vi +704 php.ini

সেমিন কোলনটিকে কোনও অসুবিধে করার জন্য সরান এবং ফাইলটি সংরক্ষণ করুন :wq

শেষ পর্যন্ত সার্ভারটি পুনরায় চালু করুন এবং ত্রুটিটি চলে গেল।


3
আপনার মধ্যে যদি লাইনটি মন্তব্য করা হয় তবে php.iniআপনি সম্ভবত php.ini এর বিকাশ কনফিগারেশন ব্যবহার করছেন।
ব্যাডহর্সি

13

আপনি যদি ডাব্লুএমএপি ব্যবহার করেন ...

আপনি যোগ করতে অথবা সম্পত্তি uncomment উচিত always_populate_raw_post_dataমধ্যে php.iniএবং তার মান সেট -1। আমার ক্ষেত্রে php.iniঅবস্থিত:

C:\wamp64\bin\php\php5.6.25\php.ini

.. তবে আপনি যদি এখনও সতর্কতা পান (তবে আমি যেমন ছিলাম)

এছাড়াও আপনি সেট করা উচিত always_populate_raw_post_data = -1মধ্যে phpForApache.ini:

C:\wamp64\bin\php\php5.6.25\phpForApache.ini

যদি আপনি এই ফাইলটি খুঁজে না পান তবে একটি ব্রাউজার উইন্ডোটি খুলুন এবং এতে যান:

http://localhost/?phpinfo=1

এবং লোডড কনফিগারেশন ফাইল কীটির মান সন্ধান করুন । আমার ক্ষেত্রে php.iniডাব্লুএএমএপি দ্বারা ব্যবহৃত ব্যবহৃত অবস্থিত:

C:\wamp64\bin\apache\apache2.4.23\bin\php.ini (সিটিতে লিঙ্ক করুন: \ wamp64 \ bin \ php \ php5.6.25 \ phpForApache.ini)

অবশেষে WAMP পুনঃসূচনা করুন (বা সমস্ত পরিষেবা পুনঃসূচনা ক্লিক করুন)


6

যদি .htaccessফাইলটি উপলভ্য না হয় তবে এটি রুট ফোল্ডারে তৈরি করুন এবং কোডের এই লাইনটি গত করুন।

এটিকে .htaccessফাইলে রাখুন (এপিআই-তে ভাল কাজ করার পরীক্ষা করা হয়েছে)

<IfModule mod_php5.c>
    php_value always_populate_raw_post_data -1
</IfModule>

2
দয়া করে আমার প্রভুকে ব্যাখ্যা করুন
জোহাইব

5

আপত্তিহীন

always_populate_raw_post_data = -1 

পিএইচপি.আইএনআইতে (লাইন # 703) এবং এপাচ পরিষেবাগুলি পুনরায় চালু করা আমাকে যেভাবেই বার্তা থেকে মুক্তি পেতে সহায়তা করে

; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
; to disable this feature and it will be removed in a future version.
; If post reading is disabled through enable_post_data_reading,
; $HTTP_RAW_POST_DATA is *NOT* populated.
; http://php.net/always-populate-raw-post-data
; always_populate_raw_post_data = -1

4

গ্রহণযোগ্য উত্তর হিসাবে যেমন php.init পরিবর্তন করার পরে এখনও এই সমস্যার সাথে লড়াই করছেন যে কেউ। যেহেতু ত্রুটি ঘটেছিল যখন কোনও এজ্যাক্স পিটিশন POSTকোনও প্যারামিটার ছাড়াই তৈরি করা হয় আপনাকে যা করতে হবে তা হল প্রেরণ পদ্ধতিতে পরিবর্তন করা GET

var xhr = $.ajax({
   url:  url,
   type: "GET",
   dataType: "html",
   timeout: 500,
});

আপনি যদি POSTকোনও কারণে পদ্ধতিটি রাখতে চান তবে এখনও অন্য একটি বিকল্প হ'ল এজ্যাক্স পেটিটাইটনে একটি খালি জেএসওএন অবজেক্ট যুক্ত করা।

var xhr = $.ajax({
   url:  url,
   type: "POST",
   data: {name:'emtpy_petition_data', value: 'empty'}
   dataType: "html",
   timeout: 500,
});

4

এইচটিএমএল ফর্ম (পোস্ট পদ্ধতি) থেকে ডেটা প্রেরণ করার সময় আমি এই ত্রুটি বার্তাটি পেয়েছি। আমাকে যা করতে হয়েছিল তা হ'ল ফর্মের এনকোডিংটি "পাঠ্য / প্লেইন" থেকে "অ্যাপ্লিকেশন / x-www-form-urlencoded" বা "মাল্টিপার্ট / ফর্ম-ডেটা" তে পরিবর্তন করতে হয়েছিল। ত্রুটি বার্তাটি খুব বিভ্রান্তিকর ছিল।


2

দুর্ভাগ্যক্রমে, এখানে @ ইটঅং এর উত্তরটি সঠিক নয় । তার উত্তরটি পড়ার পরে আমি যে অজ্যাক অনুরোধটি চালাচ্ছিলাম তার সাথে একটি ডামি ভেরিয়েবল যুক্ত করেছি (তবুও তাদের কিছুটির কিছু ক্ষেত্র আগেও রয়েছে) কেবল ত্রুটিটি কখনই প্রদর্শিত না হয় তা নিশ্চিত করার জন্য।

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

0

ঠিক আছে, যদি সেখানে ভাগ করে নেওয়া হোস্টিংয়ে কেউ থাকে এবং php.iniফাইলের অ্যাক্সেস না থাকে তবে আপনি এই পিএইচপি ফাইলগুলির একেবারে শীর্ষে কোডের এই লাইনটি সেট করতে পারেন:

ini_set('always_populate_raw_post_data', -1);

একই আরও কাজ করে। আমি আশা করি এটি কারও কোনও ডিবাগিং সময় বাঁচায় :)


0

নোট: আপনি যদি পিএইচপিস্টর্ম ব্যবহার করছেন এখানে চিত্র বর্ণনা লিখুন


আমি এক ঘন্টার এই সমস্যার সমাধান বের করার চেষ্টা অতিবাহিত, চিন্তা যে এটা আমার পিএইচপি সার্ভার সমস্যা হয়েছে, তাই আমি সেট 'always_populate_raw_post_data' থেকে '-1'php.ini এবং কিছুই কাজ।

যতক্ষণ না আমি খুঁজে পেলাম যে সার্ভারে নির্মিত পিএইচপিস্টোরম ব্যবহার করাটাই সমস্যার উত্তরের হিসাবে এখানে সমস্যার কারণ হিসাবে দেখাচ্ছে: ল্যাজইন এর উত্তর এখানে , সুতরাং আমি এটি ভাগ করে নেওয়ার কথা ভেবেছিলাম।


-1

; php.in এ সর্বদা_পপুলেট_আরও_পোস্ট_ডেটা = -1 এই লাইনের মন্তব্য সরান .. সর্বদা_ জনবহুল_রা_পোস্ট_ডাটা = -1


4
আপনি কি ব্যাখ্যা করতে পারবেন ?? কেন? এছাড়াও, আপনার পোস্টটি সঠিকভাবে ফর্ম্যাট / ইনডেন্ট করুন।
রবি

-1

আমি কেবলমাত্র একটি বন্ধুর কাছ থেকে এই সমস্যার সমাধান পেয়েছি। তিনি বলেছিলেন: ওব_স্টার্ট () যুক্ত করুন; আপনার সেশন কোড অধীনে। আপনি প্রস্থান যোগ করতে পারেন (); শিরোনামের অধীনে। আমি এটা চেস্টা করেছিলাম এবং এটা কাজও করেছিল. আশাকরি এটা সাহায্য করবে

এটি ভাড়াটে হোস্টিং সেভারে যারা php.init ফাইলটিতে অ্যাক্সেস রাখেন না তাদের জন্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.