सख्त मानकों के लिए त्रुटि रिपोर्टिंग को अक्षम करने के लिए मुझे अपनी PHP स्क्रिप्ट को शीर्ष पर सेट करना होगा।
क्या कोई मदद कर सकता है?
सख्त मानकों के लिए त्रुटि रिपोर्टिंग को अक्षम करने के लिए मुझे अपनी PHP स्क्रिप्ट को शीर्ष पर सेट करना होगा।
क्या कोई मदद कर सकता है?
जवाबों:
क्या आप त्रुटि रिपोर्टिंग को अक्षम करना चाहते हैं, या केवल उपयोगकर्ता को इसे देखने से रोकें? यह आमतौर पर एक उत्पादन साइट पर भी त्रुटियों को लॉग करने के लिए एक अच्छा विचार है।
# 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
निर्देश को उपयोग करने के लिए कहेंगे, जिसमें आप त्रुटियां चाहते हैं।
php.ini
फ़ाइल में भी सेट कर सकते हैं , जैसे कि यदि आप PHP कोड को संशोधित नहीं कर सकते हैं।
php.ini
या .htaccess
या मेरे PHP कोड में कहीं।
बिना किसी त्रुटि के।
error_reporting(0);
या सिर्फ सख्त के लिए नहीं
error_reporting(E_ALL ^ E_STRICT);
और यदि आप कभी भी सभी त्रुटियों को फिर से प्रदर्शित करना चाहते हैं, तो उपयोग करें
error_reporting(-1);
^
कि केवल एक प्रकार की त्रुटि को छोड़ने के लिए अच्छा है। यदि आप अतिरिक्त प्रकार बंद करना चाहते हैं तो आपको E_ALL & ~E_DEPRECATED & ~E_STRICT
प्रारूप का उपयोग करना चाहिए । या शायद (E_ALL & ~(E_DEPRECATED | E_STRICT))
प्रारूप।
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 इसके अतीत में नहीं था, लेकिन अब PHP 5.4 के बाद से है)। यदि यह धारणा एक दिन विफल हो जाती है, ^
तो न केवल टूट जाएगी, बल्कि वास्तव में इसके विपरीत है जो यह करना चाहिए था: यह X_ (कैसे ) काम करने के कारण E_STRICT को सक्षम करेगा ^
। & ~
हालाँकि, हमेशा E_STRICT को निष्क्रिय करता है, E_ALL के वर्तमान मूल्य को कोई फर्क नहीं पड़ता। इसलिए & ~
इस्तेमाल किया जाना चाहिए।
उपरोक्त सभी उपाय सही हैं। लेकिन, जब हम एक सामान्य PHP अनुप्रयोग के बारे में बात कर रहे हैं, तो उन्हें हर पृष्ठ में शामिल करना होगा, जिसकी आवश्यकता है। इसे हल करने का एक तरीका .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
) रखते हैं
php_admin_value error_reporting
काम करने के लिए (vhost config में) किया।
अगर php.ini में सेट नहीं किया गया है, तो error_reporting ध्वज का डिफ़ॉल्ट मान E_ALL & ~ E_NOTICE है । लेकिन कुछ इंस्टॉलेशन (विशेष रूप से विकास के वातावरण को लक्षित करने वाले इंस्टॉलेशन) में E_ALL है E_STRICT इस ध्वज के मूल्य के रूप में सेट किया गया (यह विकास के दौरान अनुशंसित मूल्य है )। कुछ मामलों में, विशेष रूप से जब आप कुछ ओपन सोर्स प्रोजेक्ट्स चलाना चाहेंगे, जिसे PHP 5.3 युग से पहले विकसित किया गया था और अभी तक PHP 5.3 द्वारा परिभाषित सर्वोत्तम प्रथाओं के साथ अपडेट नहीं किया गया है, तो आपके विकास के माहौल में, आप शायद कुछ प्राप्त करने में भाग लेंगे। आपके जैसे संदेश मिल रहे हैं। इस स्थिति पर निपटने का सबसे अच्छा तरीका है, केवल स्थापित करने के लिए है E_ALL के मूल्य के रूप में error_reporting या तो में, झंडाphp.ini या कोड में (शायद फ्रंट-कंट्रोलर जैसे index.php में वेब-रूट निम्नानुसार है:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
वर्डप्रेस
यदि आप वर्डप्रेस वातावरण में काम करते हैं, तो वर्डप्रेस फ़ंक्शन में फ़ाइल wp- / load.php में त्रुटि स्तर सेट करता है wp_debug_mode()
। इसलिए आपको इस स्तर को बदलना होगा क्योंकि इस फ़ंक्शन को कॉल किया गया है (फ़ाइल में गिट में जांच नहीं की गई है ताकि केवल विकास हो), या तो सीधे error_reporting()
कॉल को संशोधित करें
मुझे ऐसा उत्तर नहीं मिला जो साफ-सुथरा हो और उत्पादन के लिए तैयार सॉफ्टवेयर के लिए उपयुक्त हो, इसलिए यहां यह दिया गया है:
/*
* 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);
E_ALL & ~E_DEPRECATED & ~E_STRICT
उत्पादन के लिए त्रुटि रिपोर्टिंग सेट करें । ध्यान दें कि वे आपको सख्त मानकों को निष्क्रिय करने का सुझाव देते हैं।