আমি কীভাবে পিএইচপি বিজ্ঞপ্তিগুলি বন্ধ করব?


126
Notice: Constant DIR_FS_CATALOG already defined

আমি ইতিমধ্যে আউট মন্তব্য করেছি display_errorsমধ্যে php.iniকিন্তু কাজ করছে না।

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

হালনাগাদ

আমি display_errors = Offসেখানে রেখেছি কিন্তু এটি এখনও এই ধরণের নোটিশগুলির প্রতিবেদন করছে,

এটি কি পিএইচপি 5.3 এর সাথে সমস্যা?

অসংখ্য কল স্ট্যাকের প্রতিবেদন করাও ..


3
আপনি যদি আপাচি ব্যবহার করছেন তবে আপনার সার্ভারটি পুনরায় চালু করতে হতে পারে! আপনি যদি এক্সএএমপিপি ব্যবহার করেন তবে ম্যানেজার অ্যাপ্লিকেশনটিতে কেবল "পুনঃসূচনা" নির্বাচন করুন।
st4wik

2
grep display_errors /path/to/php.iniআপনার লাইনটি ফাইলের নিচে কোথাও ওভাররাইড হচ্ছে কিনা তা দেখার জন্য আমি দৌড়ানোর পরামর্শ দিই । এটাই আমার ঘটছিল।
usand Friends

ত্রুটি_বন্দরের সমাধান হল
ডেভিড স্টেনেন

ini_set('display_errors',0)আপনার পিএইচপি ফাইল চেষ্টা করুন। আপনি যখন ইন-সেটিংগুলি কাজ করছেন না, phpinfo()আপনার পছন্দসই মানটি দেখায় কিনা তা পরীক্ষা করা উচিত । যদি না হয় আপনি ভুল
ইনআই

এটি কোনও পিএইচপি 5.3 বাগ নেই। ডিসপ্লে_এররফগুলি পিএইচপি ৪.০.৩ থেকে শেষ সংস্করণ @see 3v4l.org/87gIl
Radon8472

উত্তর:


78

আপনি ফাংশন সেট display_errorsকরতে 0বা ব্যবহার করতে পারেন error_reporting()

তবে, বিজ্ঞপ্তিগুলি বিরক্তিকর (আমি আংশিক সহানুভূতি জানাতে পারি ) তবে তারা একটি উদ্দেশ্য করে serve আপনার একটি ধ্রুবকের দু'বার সংজ্ঞা দেওয়া উচিত নয়, দ্বিতীয় বার কাজ করবে না এবং ধ্রুবকটি অপরিবর্তিত থাকবে!


4
+1: আমি উল্লেখ করার অনুমোদন দিচ্ছি যে তার ত্রুটিগুলি সংশোধন করা উচিত, প্রতিবেদনটি বন্ধ করা উচিত নয়। এবং আপনি এটি @ জোনাথন কুহানের চেয়ে মৃদু উপায়ে করেছেন :-)
জোশ

1
না, মনে হচ্ছে এটি php5.3 এর একটি বাগ, display_errorsপ্রত্যাশার মতো কাজ করে না।
ব্যবহারকারী 198729

@ ব্যবহারকারীর phpinfo()সেটিংসটি আসলে প্রয়োগ হয় কিনা তা দেখার চেষ্টা করুন try আমাকে ক্ষমা করুন, তবে আমি দৃ strongly়ভাবে সন্দেহ করি যে আপনি পিএইচপি 5.3 এ একটি বাগ খুঁজে পেয়েছেন - আমি কেবল এটি দেখলেই তা বিশ্বাস করব :)
পেক্কা

আশ্চর্যজনক, local valueচালু আছে, তবে master valueবন্ধ রয়েছে, এর সঠিক অর্থ কী তা জানেন না ...
ব্যবহারকারী 198729

1
@ ব্যবহারকারীর আমি মনে করি স্থানীয় মান ফাইলের ini_setনির্দেশাবলী বা php_ini_flagসেটিংস থেকে আসতে পারে .htaccess
পেক্কা 20'10

242

পিএইচপি ডকুমেন্টেশন ( ত্রুটি_পূরণ ) থেকে:

<?php
// Turn off all error reporting
error_reporting(0);
?>

এই ফাংশনের জন্য অন্যান্য আকর্ষণীয় বিকল্পগুলি:

<?php

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL & ~E_NOTICE);
// For PHP < 5.3 use: E_ALL ^ E_NOTICE

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

খুব সহায়ক এবং প্রশ্নের উত্তর দেয়। যদিও আমি জানি যে সমস্ত বিজ্ঞপ্তিগুলিও ঠিক করা ভাল। কখনও কখনও বিজ্ঞপ্তিগুলি কিন্তু লক্ষ্যগুলি প্রদর্শন করা সহজ হতে পারে।
টিমো 200 2

3
উপরের পোস্টে বর্ণিত only বিজ্ঞপ্তি ব্যবহার করে কেবলমাত্র বিজ্ঞপ্তিগুলি বন্ধ করা আমার পক্ষে কাজ করে না। পিএইচপি ভি 5.3 ব্যবহারের জন্য: E_ALL & ~ E_NOTICE
শীতল

যদি আপনার কাছে JSON বা এক্সএমএল বা যা কিছু রিটার্ন করে থাকে তবে আপনি এগুলি বন্ধ করতে চাইতে পারেন। বা কমপক্ষে এগুলি ব্যতিক্রমগুলিতে রূপান্তর করুন এবং সে অনুযায়ী তাদের পরিচালনা করুন।
TheRealChx101

হ্যালো. আমার জন্য কাজ করেছেন। আপনাকে অনেক ধন্যবাদ.
এইচ। ফরিদ

ত্রুটিগুলি stdoutput এ প্রেরণ করা হলে প্রদর্শন_রিয়ারগুলি নিয়ন্ত্রণ করে। তবে আপনি যখন ত্রুটি_বন্দরের পরিবর্তে 0 তে পরিবর্তন করেন, আপনি সমস্ত ত্রুটি-পরিচালনা ও ত্রুটি-নিষ্ক্রিয় স্টাফকে পুরোপুরি অক্ষম করে রাখেন .. আপনার ত্রুটি_বর্ধনা (0) কখনও করা উচিত নয়।
Radon8472

30

পিএইচপি কমান্ড লাইন জন্য, সেট করুন

error_reporting = E_ALL & ~E_NOTICE

ভিতরে /etc/php5/cli/php.ini

কমান্ড phpএক্সিকিউশন তারপর নোটিশ বাদ দেয়।


এই ত্রুটিটি_ php.ini- এ = E_ALL & ~ E_NOTICE এবং ~ E_WARNING করে রিপোর্ট করে। এটি পিএইচপি বিজ্ঞপ্তি এবং পিএইচপি সতর্কতা অক্ষম করে। যাতে কোনও পিএইচপি বিজ্ঞপ্তি এবং পিএইচপি সতর্কতা ব্রাউজারগুলিতে দেখা যায় না
দীপক লমিছনে

এটি কনসোল পিএইচপি সেটিংসের জন্য যায়। আপনি যদি apache2 ওয়েবসার্ভার কনফিগারেশন ফাইলের উপরে ওয়েব পৃষ্ঠাগুলি উত্পন্ন করার জন্য পিএইচপি ব্যবহার করেন তবে /etc/php5/apache2/php.ini কোন কনফিগার ফাইলটি আসলে ব্যবহৃত হয় তা দেখতে phpinfo () ব্যবহার করা ভাল।
মিলানজি

23
<?php

// Turn off all error reporting
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

উত্স http://php.net/manual/en/function.error-reporting.php


2
এটি কি বহু বছর আগে পোস্ট করা এই বিদ্যমান উত্তরের ডুপ্লিকেট নয় ?
প্যাং করুন

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

@ অভিষেকগোল ইউনিকর্নস ছদ্মবেশে পোনি, উক্তিটি অপ্রাসঙ্গিক, আপনি এখনও চার বছর পরে ইতিমধ্যে বিদ্যমান উত্তরটি নকল করেছেন ।
রিকি বয়েস

@ রিকিবি আমি বিদ্যমান উত্তরটি যাচাই করিনি এবং কপিও করিনি।
অভিষেক গোয়েল

12

আপনার কোডে এই লাইনটি ব্যবহার করেছেন

error_reporting(E_ALL ^ E_NOTICE);  

আমি মনে করি এটি আপনার জন্য পূর্ণ।


6

আপনি খুঁজছেন:

php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"

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

1
ঠিক! আমি /usr/bin/php -d error_reporting="E_ERROR | E_WARNING | E_PARSE" -f /path/to/file.phpআমার
ক্রন্টব

4

আমি সেট না করা পছন্দ error_reporting আমার কোডের ভিতরে করি। তবে একটি ক্ষেত্রে, একটি উত্তরাধিকার পণ্য, এমন অনেকগুলি নোটিশ রয়েছে যে সেগুলি অবশ্যই লুকিয়ে রাখা উচিত।

সুতরাং আমি সার্ভারসাইড কনফিগার মানটি সেট করতে এস এর error_reportingবিয়োগ করতে নিম্নলিখিত স্নিপেট ব্যবহার করেছি E_NOTICE

error_reporting(error_reporting() & ~E_NOTICE);

এখন ত্রুটি প্রতিবেদন সেটিংটি আরও php.iniবা কনফিগার করা যেতে পারে .htaccess। কেবলমাত্র বিজ্ঞপ্তি সর্বদা অক্ষম থাকবে।


3

আপনি ini_set('display_errors',0);আপনার স্ক্রিপ্টে সেট করতে পারেন বা কোন ত্রুটিগুলি আপনি প্রদর্শন করতে চান তা নির্ধারণ করতে পারেন error_reporting()


আমাকে ini_setএখানে উল্লিখিত পদ্ধতিটি ব্যবহার করার দরকার ছিল , error_reporting(0)অন্য কোথাও উল্লিখিত পদ্ধতিটির কোনও প্রভাব ছিল না।
, pix

3

ত্রুটি সৃষ্টি না করে:

defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');

আপনার যদি সত্যিই করতে হয়, তবে ত্রুটি-প্রতিবেদন () ব্যবহার করে E_ALL ^ ​​E_NOTICE এ ত্রুটি প্রতিবেদন পরিবর্তন করুন।


1
যদি এটি কোনও প্রোডাকশন সাইট হয় বা না মনে হয় এটি ত্রুটিমুক্ত, তবুও ত্রুটিগুলি উত্থিত হওয়ার পরে তাদের প্রদর্শন করা উচিত নয় - সুতরাং 'ত্রুটিগুলি না ঘটিয়ে' কোনও বৈধ প্রশ্নের উত্তর দেওয়ার মতো মনে হবে।
ক্যাম

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

যদিও আপনার উত্তরটি "সেরা" ছিল না বলে মনে হয় ওপি-র প্রশ্নের পুরো উত্তর দেওয়া হয়েছে। আপনার উত্তরে +1 করুন এবং / ইচ্ছুক এটি উত্তর হিসাবে চিহ্নিত করা হয়েছে, কারণ এটি সঠিক উত্তর।
নাজকা

@ নাজকা হ্যাঁ, আমি তখন থেকে আমার আচরণটি পরিবর্তন করেছি এবং আরও বন্ধুবান্ধব হওয়ার চেষ্টা করেছি। :)
জোনাথন কুহন


1

আমি এই কৌশলটি সম্প্রতি খুঁজে পেয়েছি। একটি লাইন শুরুর সময় একটি @ কে ঘৃণা করুন যা সতর্কতা / ত্রুটি তৈরি করতে পারে।

যেন যাদু দ্বারা তারা অদৃশ্য হয়ে যায়।


21
সাধারণত একটি দুর্বল ধারণা পোষণ করে, এটি ইয়ারপ্লাগ লাগানোর মতো কারণ আপনার গাড়িটি একটি ভয়াবহ গ্রাইন্ড শব্দ করছে।
ডেভিড মোর

10
এটি প্রকৃতপক্ষে কিছু উদাহরণের জন্য নিখুঁত ধারণা তৈরি করে, উদাহরণস্বরূপ যখন কোনও ভেরিয়েবল সেট করা হয় বা খালি থাকে তা রেন্ডার করার সময়।
ফ্রান্স

1
এটি তখনই বোধগম্য হয় যখন আপনার কোনও ওয়ার্ডপ্রেস প্লাগইনের মতো কিছু রয়েছে যা লেখক এখনও আপডেট করেননি এবং সমস্যাটি কী ঘটছে তা আপনি ঠিক জানেন। এটি একটি ব্যান্ড-সহায়তা যদিও ঠিক নয়।
ইমপরিটিভ

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

1
আপনি নিশ্চিত হন যে আপনি যেখানে করছেন সেখানে আপনি যেখানে 100% নিশ্চিত রয়েছেন।
নিক

1

Phpinfo () ব্যবহার করুন Configuration File (php.ini) Pathএবং পিএইচপি জন্য কোন কনফিগার ফাইলের পাথ ব্যবহার করা হয়েছে তা অনুসন্ধান করুন। PHP এর চলমান পরিবেশের উপর নির্ভর করে একাধিক কনফিগারেশন ফাইল থাকতে পারে। সাধারণত, কনসোলের জন্য এটি:

/etc/php5/cli/php.ini

এবং পিএইচপি জন্য এটি আপাচি চালিত:

/etc/php5/apache2/php.ini

এবং তারপরে error_reportingআপনার যা প্রয়োজন তা সেট করুন:

http://www.phpknowhow.com/configration/php-ini-error-settings/ http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini- ফাইল


1

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

সুতরাং আপনার ব্রাউজারে ত্রুটিগুলি এড়াতে আপনি display_errorsপতাকাটি ইতিমধ্যে খুঁজে পেয়েছেন হিসাবে ব্যবহার করুন :

display_errors = Off

এখন আসল সমস্যাটি হ'ল আপনি যখন অন্য কারও কোড চালাচ্ছেন। সেক্ষেত্রে কোডটি সংশোধন করার সময় আপনি যখনই এই কোডটি আপগ্রেড করবেন তখন ওভাররাইট হয়ে যাবে। কোডটি বজায় রাখা এটি ক্লান্তিকর করে তোলে।

আমার ক্ষেত্রে, আমি স্ক্রিপ্টটি একবারে চালানোর crontabজন্য wp-cron.phpপিএইচপি চালাচ্ছি। আমি আমার ইমেলগুলিতে প্রেরিত ত্রুটিগুলি পাচ্ছিলাম যা আপনি প্রতি 10 মিনিটে একটি ইমেল পেলে ক্লান্তিকর হয়ে ওঠে! সেক্ষেত্রে, যদিও ওয়ার্ডপ্রেস সিস্টেমে একটি কনফিগারেশন ফাইল রয়েছে WP_DEBUGএবং তারা error_reporting()ফাংশনটিকে কল করে যাতে error_reportingকমান্ড লাইনে ভেরিয়েবলটি পরিবর্তন করার চেষ্টা করে কাজ করবে না। পরিবর্তে আপনাকে wp-config.phpরুট ফোল্ডারে ফাইল সম্পাদনা করতে হবে এবং নিশ্চিত হয়ে গেছে যে WP_DEBUGসেট করা আছে false। অন্যথায় আপনি সমস্ত সময় এই সমস্ত সতর্কতা এবং নোটিশ পাবেন।


0

ধ্রুবকটি ইতিমধ্যে ব্যবহার করে সংজ্ঞায়িত হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন:

<?php
if (!defined('MYCONST'))
    define('MYCONST', 'Weeha!');
?>

0

আমি বিশ্বাস করি php.ini এ ডিসপ্লে_এররগুলি মন্তব্য করা কার্যকর হবে না কারণ ডিফল্ট চালু আছে। পরিবর্তে আপনাকে অবশ্যই এটি 'অফ' এ সেট করতে হবে।

কনফিগারেশন পরিবর্তনগুলি প্রয়োগ করতে অ্যাপাচি পুনরায় চালু করতে ভুলবেন না।

এছাড়াও মনে রাখবেন যে আপনি রানটাইমে প্রদর্শন-ত্রুটিগুলি সেট করতে গিয়ে এখানে এটি পরিবর্তন করলে চূড়ান্ত ত্রুটিগুলি প্রভাবিত করে না।

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


0

দ্বিগুণ সংজ্ঞায়িত ধ্রুবক

নির্দিষ্ট ত্রুটিটি এখানে ঠিক করতে আপনি এটি নির্ধারণের আগে ধ্রুবকটি ইতিমধ্যে সংজ্ঞায়িত কিনা তা পরীক্ষা করতে পারেন:

if ( ! defined( 'DIR_FS_CATALOG' ) ) 
  define( 'DIR_FS_CATALOG', 'something...' );

আমি ব্যক্তিগতভাবে ধ্রুবকটির জন্য কোডবেসে কোনও অনুসন্ধান দিয়ে শুরু করব DIR_FS_CATALOG, তারপরে এটির সাথে দ্বৈত সংজ্ঞাটি প্রতিস্থাপন করব।

পিএইচপি বিজ্ঞপ্তিগুলি ইনলাইন, কেস-কেস-কেস লুকানো হচ্ছে

পিএইচপি @ত্রুটি নিয়ন্ত্রণ অপারেটর সরবরাহ করে, যা আপনি নির্দিষ্ট ফাংশনগুলিকে অগ্রাহ্য করতে ব্যবহার করতে পারেন যা নোটিশ বা সতর্কতার কারণ হয়ে থাকে।

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

এখানে একটি উদাহরণ:

// Intentional file error
$missing_file = @file( 'non_existent_file' );

এই সম্পর্কে আরও পিএইচপি এর ত্রুটি নিয়ন্ত্রণ অপারেটর ডক্সে পাওয়া যাবে।

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