পিএইচপি 5 কঠোর মান ত্রুটি অক্ষম করে


175

কঠোর মানদণ্ডের জন্য ত্রুটি প্রতিবেদন অক্ষম করতে আমার উপরে আমার পিএইচপি স্ক্রিপ্টটি সেটআপ করতে হবে।

কেউ সাহায্য করতে পারেন?


8
@ 451F: আমি মনে করি এখানে মূল শব্দগুলি "কঠোর মান"। আমি পূর্ববর্তী সংস্করণগুলি সম্পর্কে জানি না তবে পিএইচপি 5.4.0 দিয়ে এটি প্রস্তাবিত হয় আপনি E_ALL & ~E_DEPRECATED & ~E_STRICTউত্পাদন করার জন্য ত্রুটি প্রতিবেদন সেট করে । লক্ষ্য করুন যে তারা আপনাকে কঠোর মান অক্ষম করার পরামর্শ দেয়।
ভুয়া কোড বানর রশিদ

এছাড়াও আপনাকে php.ini ফাইলটি সনাক্ত করুন এবং এটিকে /
ইউএসআর

উত্তর:


185

আপনি কি ত্রুটি প্রতিবেদন অক্ষম করতে চান, বা কেবল ব্যবহারকারীকে এটি দেখা থেকে আটকাতে চান? এমনকি কোনও প্রোডাকশন সাইটে ত্রুটিগুলি লগ করা সাধারণত ভাল ধারণা।

# in your PHP code:
ini_set('display_errors', '0');     # don't show any errors...
error_reporting(E_ALL | E_STRICT);  # ...but do log them

তারা আপনার স্ট্যান্ডার্ড সিস্টেম লগ এ লগ করা হবে, বা error_logআপনি ত্রুটি কোথায় যেতে চান তা নির্দিষ্ট করতে নির্দেশিকা ব্যবহার করুন ।


11
কেবল স্পষ্টভাবে স্পষ্ট করে বলতে: অবশ্যই আপনি এগুলি আপনার php.iniফাইলেও সেট করতে পারেন , যেমন আপনি যদি পিএইচপি কোডটি সংশোধন করতে না পারেন।
sschuberth

1
উত্পাদনে কঠোর ত্রুটিগুলি লগ করাও একটি খারাপ অভ্যাস। যেহেতু আপনি আপনার লগগুলি নীচের নোটগুলির সাথে পূরণ করতে পারেন যা সম্ভবত নিম্নলিখিত বিষয়গুলির একটি বা উভয়ই কারণ নয়: সার্ভারএডমিন ত্রুটিগুলি মিস করবে / উপেক্ষা করবে এবং লগ ডিরেক্টরিটি কোনও পর্যায়ে সমস্ত সার্ভার স্পেস গ্রাস করবে।
ল্যান্স

4
এটি আমার পক্ষে কাজ করে না

1
আমার php.ini লগ_এরফারস = ভারসামি ইনআই_সেটে ('প্রদর্শন_পরিবর্তন', '0') পাওয়া গিয়েছিল নীচের পাশাপাশি এটি কীভাবে কাজ করবে; শেষ এক সেট জয় হয়?
অবতরণ করেছে

আপনি যখন কোনও কোড পোস্ট করেন তখন @Nate দয়া করে আমাদের এটি কোথায় আটকানো যায় তা জানান। আমি কোথায় রাখব জানি না: php.iniবা .htaccessআমার পিএইচপি কোডে বা অন্য কোথাও।
27 Пронин

89

কোন ত্রুটি জন্য।

error_reporting(0);

বা কেবল কঠোর নয়

error_reporting(E_ALL ^ E_STRICT);

এবং আপনি যদি সমস্ত ত্রুটি আবার প্রদর্শন করতে চান তবে ব্যবহার করুন

error_reporting(-1);


56
+1: আমি বিশ্বাস করি যে ^এক ধরণের ত্রুটি বাদ দেওয়ার জন্য এটি কেবল ভাল। আপনি যদি অতিরিক্ত ধরণের বন্ধ করতে চান তবে আপনার E_ALL & ~E_DEPRECATED & ~E_STRICTফর্ম্যাটটি ব্যবহার করা উচিত । অথবা সম্ভবত (E_ALL & ~(E_DEPRECATED | E_STRICT))ফর্ম্যাট।
ভুয়া কোড বানর রশিদ

10
দ্রষ্টব্য: E_STRICT পিএইচপি 5.4 সাল থেকে কেবল E_ALL এরই অংশ
ফ্রেড হাসলাম

@ ফেককোডমোনকিরাশিদ আমি ভাবছি কেন এমন হয়? সম্ভবত কারণ তখন বিবর্তন ক্রমটি গুরুত্বপূর্ণ?
কোডেলিং od

পিএইচপিini_set('error_reporting', E_ALL&~E_STRICT);ini_set('error_reporting', E_ALL^E_STRICT);
স্ট্রাইকটি

আমি উল্লেখ করতে চাই যে ^("xor") এর পরিবর্তে & ~("এবং" নয়) ব্যবহার করা একটি খারাপ ধারণা ! অনুমানের^ উপর নির্ভর করে যে E_STRICT E_ALL এর অংশ এবং সর্বদা এটির অংশ হবে। এটি খারাপ কারণ E_ALL অতীতে পরিবর্তন করেছিল (E_STRICT এর অতীত ছিল না, তবে এখন পিএইচপি 5.4 এর পরে)। যদি অনুমানটি একদিন ব্যর্থ হয়, তবে কেবল ভেঙে যাবে না, তবে আসলে এটি যা করা উচিত তার বিপরীতে করবে: এটি XOR ( ) কীভাবে কাজ করে তার কারণে এটি E_STRICT সক্ষম করবে । তবে E_STRICT সর্বদা অক্ষম করে দেবে, E_ALL এর বর্তমান মান নির্বিশেষে। সুতরাং ব্যবহার করা উচিত। ^^& ~& ~
জে

31

উপরের সমস্ত সমাধান সঠিক। তবে, যখন আমরা একটি সাধারণ পিএইচপি অ্যাপ্লিকেশন সম্পর্কে কথা বলছি, তাদের প্রতিটি পৃষ্ঠায় অন্তর্ভুক্ত করতে হবে, এটির প্রয়োজন। এটি সমাধানের একটি উপায় হ'ল .htaccessমূল ফোল্ডারে। শুধু ত্রুটিগুলি আড়াল করার জন্য। [ফাইলটিতে একটি অনুসরণকারী রেখা রাখুন]

php_flag display_errors off

অথবা

php_value display_errors 0

এর পরে, ত্রুটি প্রতিবেদন সেট করতে

php_value error_reporting 30719

আপনি যদি ভাবছেন যে কীভাবে মানটি 30719এল, E_ALL (32767), E_STRICT (2048) আসলে সংখ্যার মান এবং ( 32767 - 2048 = 30719) ধরে রাখে


2
অনেক অনেক ধন্যবাদ - এটি পিএইচপি 5.4.7 এ ট্রিকটি (.htaccess সমাধান) করেছিল - অন্য কিছুই - এমনকি .ini পরিবর্তন করে - কৌশলটি করছিল।

আমি php_admin_value error_reportingএটি কাজ করার জন্য (vhost কনফিগারেশনে) ব্যবহার করেছি।
ল্য ট্যারিইলউন

@ সিজা, সঠিক এটি স্থির করুন।
স্টারেক্স

1
এটি পৃষ্ঠার বিষয়ে নয়, এই পদ্ধতিটি পছন্দ করা হয়েছে কারণ বেশিরভাগ E_STRICT ত্রুটিগুলি সংকলন-সময় এবং রানটাইমটিতে ওভাররাইড করা যায় না
AbiusX

2
হাই কেবল এটিকে সামান্য স্বাচ্ছন্দ্য করতে, যারা মোড়ানো ব্যবহার করছেন, আপনি পিএইচপি> পিএইচপি সেটিংস >> প্রদর্শন ত্রুটিগুলিতে ক্লিক করে ত্রুটিগুলি অক্ষম করতে পারেন। যদি এটি চেক করা থাকে তবে এটিটি চেক করুন।
হেমং রামি

9

ত্রুটি_বিন্যাসের পতাকাঙ্কের ডিফল্ট মান হ'ল php.ini এ সেট না থাকলে E_ALL এবং ~ E_NOTICE । তবে কিছু ইনস্টলেশন (বিশেষত বিকাশ পরিবেশকে লক্ষ্য করে ইনস্টলেশন) E_ALL রয়েছে | E_STRICT এই পতাকাটির মান হিসাবে সেট করেছে (এটি উন্নয়নের সময় প্রস্তাবিত মান )। কিছু ক্ষেত্রে, বিশেষত যখন আপনি কিছু ওপেন সোর্স প্রকল্প পরিচালনা করতে চান, যেগুলি পিএইচপি 5.3 যুগের আগে বিকাশিত হয়েছিল এবং এখনও আপনার বিকাশের পরিবেশে পিএইচপি 5.3 দ্বারা সংজ্ঞায়িত সেরা অনুশীলনগুলি দিয়ে আপডেট করা হয়নি, আপনি সম্ভবত কিছু পাওয়ার চেষ্টা করবেন আপনার মতো বার্তা পাচ্ছেন। এই পরিস্থিতি মোকাবেলার সর্বোত্তম উপায় হ'ল E_ALL কে ত্রুটি_বর্ধমান পতাকার মান হিসাবে সেট করা হয়php.ini বা কোডে (সম্ভবত ওয়েব-রুটে সূচি-পর্বের মতো কোনও ফ্রন্ট-কন্ট্রোলারে:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}


4

ওয়ার্ডপ্রেস

আপনি যদি ওয়ার্ডপ্রেস পরিবেশে কাজ করেন তবে ওয়ার্ডপ্রেস ফাংশনে ডাব্লুপি-ইনপুট / লোড.এফপি ফাইলটিতে ত্রুটির স্তর নির্ধারণ করে wp_debug_mode()। সুতরাং আপনাকে এই ফাংশনটি কল করার পরে স্তরটি পরিবর্তন করতে হবে (কোনও ফাইলে গিটে চেক করা হয়নি যাতে কেবল এটি বিকাশ হয়), অথবা হয় সরাসরি error_reporting()কলটি পরিবর্তন করুন


এটি সত্যই কার্যকর, একটি ওয়ার্ডপ্রেস ইনস্টল করার জন্য আমার ডিবাগ মোড চালু ছিল এবং বুঝতে পারিনি যে এটি এটি করেছে। তথ্যের জন্য ধন্যবাদ!
টিম

2

আমি এমন একটি উত্তর দেখতে পাই নি যা পরিষ্কার ও উত্পাদন-প্রস্তুত সফ্টওয়্যারটির জন্য উপযুক্ত, তাই এখানে এটি যায়:

/*
 * Get current error_reporting value,
 * so that we don't lose preferences set in php.ini and .htaccess
 * and accidently reenable message types disabled in those.
 *
 * If you want to disable e.g. E_STRICT on a global level,
 * use php.ini (or .htaccess for folder-level)
 */
$old_error_reporting = error_reporting();

/*
 * Disable E_STRICT on top of current error_reporting.
 *
 * Note: do NOT use ^ for disabling error message types,
 * as ^ will re-ENABLE the message type if it happens to be disabled already!
 */
error_reporting($old_error_reporting & ~E_STRICT);


// code that should not emit E_STRICT messages goes here


/*
 * Optional, depending on if/what code comes after.
 * Restore old settings.
 */
error_reporting($old_error_reporting);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.