PHP का mkdir फ़ंक्शन केवल सत्य और गलत लौटाता है। समस्या तब होती है जब यह झूठी होती है।mkdir PHP से विफल होने पर कोई कारण कैसे ढूंढें?
यदि मैं त्रुटि रिपोर्टिंग सक्षम के साथ चल रहा हूं, तो मुझे स्क्रीन पर त्रुटि संदेश दिखाई देता है। मैं अपाचे लॉग में त्रुटि संदेश भी देख सकता हूं। लेकिन मैं संदेश के पाठ को पकड़ना चाहता हूं और इसके साथ कुछ और करना चाहता हूं (उदा। आईएम के माध्यम से खुद को भेजें)। मैं त्रुटि पाठ कैसे प्राप्त करूं?
अद्यतन: अयमान के विचार के बाद, मैं इस के लिए आया था:
function error_handler($errno, $errstr) {
global $last_error;
$last_error = $errstr;
}
set_error_handler('error_handler');
if (!mkdir('/somedir'))
echo "MKDIR failed, reason: $last_error\n";
restore_error_handler();
हालांकि, मैं यह पसंद नहीं है, क्योंकि यह वैश्विक चर का उपयोग करता है। क्लीनर समाधान के लिए कोई विचार? error_get_last()
के उपयोग
Soulmerge का जवाब एक बेहतर विकल्प है क्योंकि यह आपको हैंडलर को बदले बिना त्रुटि के बारे में बताता है। –
ध्यान दें कि त्रुटि हैंडलर PHP में एक स्टैक पर संग्रहीत हैं, जिसका अर्थ है कि restore_error_handler() को कॉल करने से पहले त्रुटि हैंडलर को पुनर्स्थापित कर दिया जाएगा, चाहे वह बिल्टिन हैंडलर या कोई अन्य कस्टम हैंडलर हो। इसलिए set_error_handler() के साथ त्रुटि हैंडलर को अस्थायी रूप से बदलने में कोई हानि नहीं है। – soulmerge