পিএইচপি-তে সতর্কতা বার্তা সরান


228

আমার কিছু পিএইচপি কোড আছে। আমি এটি চালানোর সময়, একটি সতর্কতা বার্তা উপস্থিত হয়।

এই সতর্কতা বার্তাগুলি আমি কীভাবে সরিয়ে / দমন / উপেক্ষা করতে পারি?


উত্তর:


349

সতর্কতার কারণ যা কিছু ঘটছে তা আপনার সত্যই ঠিক করা উচিত তবে আপনি ত্রুটিগুলির সাথে দৃশ্যমানতা নিয়ন্ত্রণ করতে পারেন error_reporting()। সতর্কতা বার্তাগুলি এড়িয়ে যেতে আপনি এমন কিছু ব্যবহার করতে পারেন:

error_reporting(E_ERROR | E_PARSE);

53
E_ALL ^ E_WARNINGসতর্কতা ছাড়াও সমস্ত ত্রুটি প্রতিবেদন সক্ষম করা, এটির পক্ষে যুক্তি দেওয়া ভাল পছন্দ বলে মনে হয় error_reporting
মার্ক আমেরিকা

1
সাধারণত আমি সম্মত হই, আমার ক্ষেত্রে সতর্কতা বার্তা উত্পন্ন করাই আচরণের উদ্দেশ্য ছিল কারণ এটি আমার ইউনিট পরীক্ষার অংশ ছিল।
pgee70

120

সমস্ত ত্রুটি বার্তাগুলি দমন করতে আপনি আপনার ফাংশন কলের সামনে একটি @ রাখতে পারেন ।

@yourFunctionHere();

4
এটি কেবল ত্রুটিটি আড়াল করে, এটি এখনও ঘটছে। ত্রুটিগুলি পিএইচপিকে ধীর করে দেয় তাই যদি সম্ভব হয় তবে ত্রুটিটি ঠিক করা ভাল। @ ব্যবহার করা এমনকি কোনও ত্রুটি না থাকলে কোডটি ধীর করে দেয়। vega.rd.no/articles/php-performance-error-suppression
2:30 এ ডেপ্রাইভেট

46
কখনও কখনও (দুর্ভাগ্যক্রমে) আপনার সত্যিই কোনও পছন্দ নেই। উদাহরণস্বরূপ, পিএইচপি ফাংশন parse_url () "মারাত্মকভাবে ত্রুটিযুক্ত" ইউআরএলগুলির জন্য সতর্কতা জেনারেট করে - এটি ত্রুটিযুক্ত একটি বাগ যা থেকে এই ক্ষেত্রে ফাংশনটি মিথ্যা প্রত্যাবর্তন করে। সুতরাং আপনাকে অবশ্যই এই প্রোগ্রামটির আউটপুটে এই পিএইচপি সতর্কতাগুলি সহ্য করতে হবে (পার্সার / ভ্যালিডেটর অ্যাপ্লিকেশনগুলির জন্য অগ্রহণযোগ্য হতে পারে), কোনওভাবে সতর্কতা দমন করতে হবে, বা URL এর জন্য আপনার নিজের পার্সার / ভ্যালিডেটার লিখে ভাঙ্গা পিএইচপি আচরণ সম্পর্কে কাজ করতে হবে। এই ক্ষেত্রে, আমি @ পছন্দ করি।
পিটার

1
গুরুত্বপূর্ণ: এই পদ্ধতিটি ব্যবহার করুন if (1) আপনি যে সমস্যার সমাধান করে তা সংশোধন করতে পারবেন না বা (2) পিএইচপি ত্রুটি_দবিতকরণের মাধ্যমে শেষ ব্যবহারকারীদের কাছ থেকে আপনার সতর্কতাগুলি আড়াল করা কোনও সমাধান নয়।
জোশুয়া কিসুন

3
এটি কেন সমালোচিত তা আমাকে ব্যাখ্যা করুন। কিছু ফাংশন dns_get_recordসতর্কতা নিক্ষেপ করবে। আপনার কোডটি সতর্কতার জন্য ক্ষতিপূরণ দিতে পারে তবে এটি তাদের এখনও ছুঁড়ে দেয়। ত্রুটির প্রতিবেদন বন্ধ করে দেওয়া প্রোডাকশন সার্ভারে কাজ করে তবে ডভেল সার্ভারে নয়। আপনি যদি এক্সএমএল সামগ্রী তৈরি করে থাকেন তবে সতর্কতাটি ব্রাউজারটিকে রেন্ডার না করার কারণ কারণ সার্ভারটি সতর্কতার কারণে ক্ষতিকারক এক্সএমএল প্রেরণ করছে। কখনও কখনও আপনি এটি ডেভেলতে চান তবে কোনও অস্থায়ী ডিএনএস লিকআপ ব্যর্থতার কারণে এমন কিছু নয় যা আপনি ইতিমধ্যে ক্ষতিপূরণ করেছেন।
অ্যালিস ওয়ান্ডার

2
এটি কেন কার্যকর তা আমাকে ব্যাখ্যা করতে দিন, যখন সমস্ত সতর্কতা বার্তাগুলির পরিবর্তে, আপনিই সেই সতর্কবাণীটিকে ত্রুটি হিসাবে পরিচালনা করতে এবং নিজের ত্রুটি বার্তা উত্পন্ন করতে চান
ড্যানিয়েল এন।

43

অন্যান্য সমস্ত ত্রুটি প্রতিবেদন সক্ষম করার সময় সতর্কতা দমন করতে:

error_reporting(E_ALL ^ E_WARNING); 


18

আপনি যদি অন্য সমস্ত ত্রুটি প্রদর্শন করার সময় সতর্কতা এবং কিছু অন্যান্য ত্রুটির ধরণের (উদাহরণস্বরূপ, বিজ্ঞপ্তিগুলি) দমন করতে চান তবে আপনি এটি করতে পারেন:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);

15

সতর্কতা বার্তাটি গোপন করতে কোরিয় পিএইচপি তে ফাইল বা স্বতন্ত্র ফাইল অন্তর্ভুক্ত ত্রুটি_বর্ধনা (0) সেট করুন।

ওয়ার্ডপ্রেস হাইড সতর্কতা এবং নোটিশগুলি wp-config.php ফাইলে নিম্নলিখিত কোড যুক্ত করে

ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

ওয়ার্ডপ্রেসে লগগুলি লুকানোর ক্ষেত্রে এটিই সেরা সমাধান। ধন্যবাদ!!
নিও মরিনা

10

প্রশ্নের ঠিক উত্তর দেওয়া হচ্ছে না, তবে আমি মনে করি এটি কিছু পরিস্থিতিতে একটি আরও ভাল আপস:

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

printf('<div style="display:none">');
    ...Third-party stuff here...
printf('</div>');

সতর্কতা এখনও পৃষ্ঠার উত্সে ছিল আমার কাছে অনুস্মারক হিসাবে, তবে ক্লায়েন্টের কাছে অদৃশ্য।


5
ব্যক্তিগতভাবে, আমি ব্যবহার করতে চাই ob_start()এবং ob_end_clean()পরিবর্তে। এইভাবে স্টাফ এমনকি ব্রাউজারে প্রেরণ করা হবে না (যা এটি এখানে করে)।
h2ooooooo

6
এজন্য আমি "কিছু পরিস্থিতি", "সতর্কতা দমন করা উচিত নয়" এবং "আমার মনে করিয়ে দেওয়ার" অন্তর্ভুক্ত করেছি।
ডেভওয়ালি

1
আমাকে আরও ভোট দেওয়ার আগে, দয়া করে আমার উত্তরটি পড়ুন। "তৃতীয় পক্ষ", "আপস" এবং উপরের মন্তব্যটি নোট করুন। আমি অন্য যে অবস্থার মধ্যে ছিলাম সেই পরিস্থিতিতে আমি এই উত্তরটি যুক্ত করেছি এবং সেই নির্দিষ্ট পরিস্থিতিতে এটি আমাকে বাঁচিয়েছে অন্য সমস্ত উত্তর যেমন উত্তম হত না তেমন। পরের বার আমি সাহায্যকারী সম্পর্কে দুবার চিন্তা করব।
ডেভওয়ালি

এই উজ্জ্বল ধারণাটি না সরানোর জন্য আপনাকে ধন্যবাদ। আমার সিস্টেমে, আমি সমস্ত ত্রুটি এবং সতর্কতাগুলি সংরক্ষণ করি, ক্লায়েন্টদের কাছ থেকে ফেরত পাঠানো হয় এবং যখন কোনও প্রশাসক লগ ইন করেন তখন তাদের তত্ক্ষণাত এ জাতীয় কোনও ক্রিয়াকলাপে সতর্ক করা হয় যাতে তারা রক্ষণাবেক্ষণ কর্মীদের পরামর্শ দিতে পারে। সাইটটি শিক্ষামূলক গেমসের জন্য তাই এক ঘন্টা বা আরও কিছু সময়ের জন্য যদি কিছু ভুল হয়ে যায় তবে এটি কোনও বিগিজি নয়।
শনাক্ত করে

8

আমি আমার পিএইচপি.এন.ইতে নিম্নলিখিত হিসাবে এটি করি :

error_reporting = E_ALL & ~E_WARNING  & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

এটি কেবল মারাত্মক ত্রুটিগুলি এবং কোনও সতর্কবার্তা লগ করে।


7

আমি মনে করি যে আরও ভাল সমাধান .htaccess এর কনফিগারেশন সেভাবে আপনাকে আবেদনের কোড পরিবর্তন করতে হবে না। এখানে অ্যাপাচি 2-এর নির্দেশনা রয়েছে

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

7

আপনি ত্রুটি_অবস্থাপনা ব্যবহার করে সতর্কতা দমন করতে পারেন তবে আপনার স্ক্রিপ্টটি প্রথম স্থানে ফিক্স করার আরও ভাল উপায়।

কীভাবে যদি আপনি না জানেন তবে আপনার প্রশ্নটি সম্পাদনা করুন এবং আমাদের প্রশ্নে রেখাটি প্রদর্শন করুন এবং সতর্কতাটি প্রদর্শিত হবে।


7
সাফালি, আপনার সমস্যাগুলি সমাধান করা উচিত, তখন উপেক্ষা করবেন না।
সাম্পসন

2
সাফালি, পিএইচপি-র প্রতি আপনার নির্দিষ্ট আগ্রহ আছে বলে নিজেকে দেখেন এবং সেই স্ক্রিপ্টটি স্থির করে দেখুন।
পেক্কা

0

ত্রুটি নিয়ন্ত্রণ অপারেটরের সাথে ইতিমধ্যে উত্তর রয়েছে তবে এর ব্যাখ্যাটির অভাব রয়েছে। আপনি @প্রতিটি অভিব্যক্তি সহ অপারেটর ব্যবহার করতে পারেন এবং এটি ত্রুটিগুলি লুকিয়ে রাখে (মারাত্মক ত্রুটিগুলি বাদে)।

@$test['test']; //PHP Notice:  Undefined variable: test

@(14/0); // PHP Warning:  Division by zero

//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error:  Uncaught Error: Call to undefined function customFuntion()

ডিবাগিংয়ের জন্য এটি দ্রুত এবং নিখুঁত পদ্ধতি। তবে আপনার এটিকে কখনও উত্পাদনতে ব্যবহার করা বা স্থায়ীভাবে আপনার স্থানীয় সংস্করণে অন্তর্ভুক্ত করা উচিত নয়। এটি আপনাকে অনেক অপ্রয়োজনীয় জ্বালা দেবে।

পরিবর্তে আপনার বিবেচনা করা উচিত:

1. গৃহীত উত্তরে উল্লিখিত হিসাবে সেটিংস রিপোর্ট করার সময় ত্রুটি।

error_reporting(E_ERROR | E_PARSE);

বা পিএইচপি আইএনআই সেটিংস থেকে

ini_set('display_errors','Off');

২. ব্যতিক্রম ধরা

try {
    $var->method();
} catch (Error $e) {
    // Handle error
    echo $e->getMessage();
}

0

সমস্ত সতর্কতা উপেক্ষা করার জন্য আপনার কোডের শীর্ষে, এই নমুনাটি ব্যবহার করুন:

error_reporting(0);

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