2011-11-29 12 views
14

पर शाब्दिक "\ n" स्ट्रिंग्स के रूप में मैं कुछ कोड पर काम कर रहा हूं जो डीबगिंग के लिए error_log() का उपयोग करता है। समस्या यह है कि किसी कारण से, उत्पादन में सभी लाइन ब्रेक शाब्दिक \n तारों के रूप में दिखाई देते हैं, इसलिए कोई वास्तविक रेखा ब्रेक नहीं है (जटिल सरणी को समझने के लिए यह असंभव है)।
मैंने var_export और print_r दोनों error_log फ़ंक्शन के साथ उपयोग करने का प्रयास किया, और दोनों ने एक ही परिणाम का नेतृत्व किया: \n के साथ पाठ का एक ब्लॉक पूरे बिखरे हुए। मैंने str_replace\nPHP_EOL पर कोई सफलता नहीं करने का भी प्रयास किया। मैं क्या गलत कर रहा हूं?PHP त्रुटि_लॉग आउटपुट लाइन ब्रेक के रूप में मैक ओएसएक्स

स्पष्टीकरण के लिए: \n स्ट्रिंग कंसोल त्रुटि लॉग व्यूअर, टेक्स्ट एडिट और टर्मिनल में दिखाई देते हैं।

संपादित

बस पहले से ध्यान दें कि हाँ, मुझे पता है कि आप इस बात की दोबारा बोली को \n तार उन्हें पंक्ति विराम के रूप में प्रकट करने के लिए के लिए की जरूरत है कर रहा हूँ चाहता था। हालांकि, मैं आउटपुट से print_r या var_export (एक सरणी का निरीक्षण करने के लिए) से निपट रहा हूं, इसलिए यह वास्तव में मेरी मदद नहीं करता है (मुझे लगता है?)।

उत्तर

5

जाहिर है, यह समस्या आपके ऑपरेटिंग सिस्टम से स्वतंत्र है। यह प्रश्न देखें: PHP error log and newline chars

... आप फ़ाइल को इंगित करने के लिए डेबियन पर अपने php.ini में error_log निर्देश को बदलने में सक्षम होना चाहिए। यदि यह अपरिभाषित है, तो यह syslog के माध्यम से जाएगा जो एकाधिक लाइनों का समर्थन नहीं करता है।

+1

भी ध्यान रखें कि अपाचे error.log को नई-पंक्तियों को लिखने के लिए के लिए, यह लिखने की अनुमति की आवश्यकता होगी ऐसा करने (किसी और syslog बजाय error.log के लिए लिख खत्म हो जाएगा)। यदि आप अपाचे की त्रुटियों (मेरी वरीयता) के लिए syslog प्रारूप को संरक्षित करना चाहते हैं तो पर्म फिक्स या नई फ़ाइल 'php-error.log'। –

31

एक विकल्प के रूप में, आप संसाधित कर सकते हैं/sed के माध्यम से की जगह '\ n', इसलिए वे कंसोल में नई लाइनों की तरह प्रदर्शित:

लिनक्स

$ tail -f error_log | sed "s/\\\n/\\n/g" 

मैक ओएस एक्स

$ tail -f error_log | sed "s/\\\n/^M^L/g" 

नोट: मैक ओएस एक्स में, एक पंक्ति के अंत CRLF है (कैरिज रिटर्न लाइन फ़ीड) लिनक्स सिस्टम में यह है, जब केवल LF (लाइन फ़ीड)

नोट 2: उत्पादन ^M लिए मैक ओएस एक्स में टर्मिनल में, प्रेस Control+V Control+M, उत्पादन ^L करने, प्रेस Control+V Control+L

+2

काफी चालाक कामकाज :) –

+2

ओएसएक्स वाक्यविन्यास काम नहीं किया। – Tyguy7

+0

क्या ओएसएक्स संस्करण। मावेरिक्स? – eightyfive