2011-08-22 13 views
40

जब मुझे लगता है कि कोई आंतरिक सर्वर त्रुटि (500) लेकिन कुछ भी नहीं त्रुटि लॉग में दिखाया गया है, लौटा रहा है एक php आवेदन है मैं एक मुद्दा हो रहा है लौट PHP।500 त्रुटि लेकिन कोई त्रुटि लॉग

अब मुझे पता है कि मैं जो चलाने की कोशिश कर रहा हूं उसके साथ त्रुटि है, मुझे पता है कि मुझे कुछ फाइलें याद आ रही हैं और अपाचे त्रुटि लॉग में कुछ नहीं दिखाना चाहिए (अन्यथा मुझे कैसे पता होना चाहिए कि मैं क्या खो रहा हूं)।

मेरे द्वारा बनाए गए एक परीक्षण स्क्रिप्ट ही vhost विन्यास और उन त्रुटि के तहत पाई गई त्रुटियों में दिखाई है ठीक तो सब कुछ लगता है सही जहाँ तक php/अपाचे के रूप में विन्यस्त। क्या कुछ php त्रुटियां हैं जो त्रुटि लॉग में दिखाई देती हैं (php किसी भी प्रकार की सूचना, चेतावनी, त्रुटि, घातक त्रुटि इत्यादि प्रदर्शित करने के लिए कॉन्फ़िगर किया गया है ...)?

यह मानक अपाचे और साथ apt-get ubuntu रेपो से php के साथ ubunut 10.04 पर चल रहा है।

+0

यह विंडोज़ और आईआईएस के साथ है, सही? – Neal

+0

क्षमा करें, इसमें शामिल होना चाहिए था: ubuntu 10.04 – ryanzec

+0

Apache और PHP दोनों मानक ubuntu repo से apt-get – ryanzec

उत्तर

45

अपनी स्रोत फ़ाइल के लिए स्कैन।

From php documentation site

वर्तमान में "@" त्रुटि नियंत्रण ऑपरेटर उपसर्ग भी गंभीर त्रुटियों कि स्क्रिप्ट निष्पादन को समाप्त कर देगा के लिए रिपोर्टिंग त्रुटि को निष्क्रिय कर देगा। अन्य बातों के अलावा, इसका मतलब है कि अगर आप एक निश्चित समारोह से दबाने त्रुटियों के लिए "@" का उपयोग करें और या तो इसे उपलब्ध नहीं है या गलत टाइप किया गया है, स्क्रिप्ट क्यों करने के लिए के रूप में कोई संकेत के साथ वहीं मर जाएगा।

+18

यह था। कोडइग्निटर स्पष्ट रूप से इन ढांचे में इनका उपयोग करना पसंद करता है, मुझे कोडइग्निटर से नापसंद करने का एक और कारण बताता है। – ryanzec

+6

यह बिल्कुल मेरे मामले में कोडइग्निटर की वापसी @ mysql_connect (... 'इस तथ्य को मास्क कर रही थी कि मैं एक नए सर्वर पर php के mysql मॉड्यूल को स्थापित करने में विफल रहा था। मुझे बेवकूफ, घंटों बर्बाद, सबक सीखा। – rymo

+0

ओह मैन, मुझे उम्मीद है कि यह है। यहाँ से सीआई ऐप भी ... –

0

आपको PHP त्रुटि लॉग को सक्षम करने की आवश्यकता है।

आप एक php त्रुटि होने पर ही ये वेब सर्वर में कुछ यादृच्छिक खराबी की वजह से है, यह एक 500 आंतरिक त्रुटि (मैं एक ही मुद्दा है) फेंकता है।

यदि आप PHP त्रुटि लॉग में देखते हैं, तो आपको अपना समाधान मिलना चाहिए।

see here in the doc of how to enable it in the php.ini

+0

के साथ मुझे लगता है कि आपने प्रश्न को गलत समझा है .. उसका PHP त्रुटि लॉग सक्षम है लेकिन यह विशेष 500 आंतरिक सर्वर त्रुटि नहीं हो रही थी लॉग इन किया। मुझे एक निजी विधि तक पहुंचने की कोशिश करके उत्पन्न त्रुटि के लिए लार्वेल में अब यह समस्या मिली है। अन्य 500 त्रुटियां लॉग हो गईं लेकिन वह नहीं ... यह पता नहीं लगा सकता कि क्यों :( – geoidesic

6

हो सकता है कि कुछ त्रुटि उत्पादन बंद हो जाती है। (मैं समझता हूं कि आप यह कहने की कोशिश कर रहे हैं कि अन्य स्क्रिप्ट त्रुटियों में उनकी त्रुटियों को सही तरीके से आउटपुट करते हैं?)

आप स्क्रिप्ट से बाहर निकलने के लिए स्क्रिप्ट को डीबग करना शुरू कर सकते हैं (echo 1; exit; को पहली पंक्ति में जोड़कर शुरू करें स्क्रिप्ट और जांचें कि ब्राउज़र 1 आउटपुट करता है या फिर उस पंक्ति को नीचे ले जाता है)। @ खोजने के लिए

5

अतीत में, मैं दो मामलों में कोई त्रुटि लॉग था:

  1. उपयोगकर्ता जिसके तहत अपाचे चल रहा था php_error_log फ़ाइल को संशोधित करने के लिए कोई अनुमति नहीं थी।
  2. त्रुटि 500 ​​.htaccess की खराब कॉन्फ़िगरेशन के कारण हुई, उदाहरण के लिए गलत पुनर्लेखन मॉड्यूल सेटिंग्स। इस स्थिति में अपाचे error_log फ़ाइल में त्रुटियां लॉग इन हैं।

    मैं एक ही मुद्दा था:

2

यहाँ एक और कारण है कि त्रुटियों दिखाई नहीं हो सकता है। मेरे मामले में, मैंने स्रोत को उत्पादन वातावरण से कॉपी किया था।इसलिए ENVIRONMENTindex.php में परिभाषित चर 'production' पर सेट किया गया था। इसने error_reporting को 0 पर सेट करने के लिए कारण बनाया (कोई लॉगिंग नहीं)। बस इसे 'development' पर सेट करें और आपको अपाचे लॉग में त्रुटि संदेश देखना प्रारंभ करना चाहिए।

पता चला 500 एक अर्द्ध बृहदान्त्र डेटाबेस config में लापता की वजह से था :-)

1

एक और मामला है जो मुझे क्या हुआ, है मैं अपने पृष्ठों में से कुछ के लिए एक कर्ल किया था, और आंतरिक सर्वर त्रुटि और कुछ भी नहीं मिला अपाचे लॉग में था, भले ही मैंने सभी त्रुटि रिपोर्टिंग सक्षम की।

मेरे समस्या, यह हुआ क्योंकि त्रुटि एक रूपरेखा के स्तर पर और नहीं एक PHP एक पर था कर्ल में मैं curl_setopt($CR, CURLOPT_FAILONERROR, true);

कौन सा तो मुझे मेरी त्रुटि नहीं दिखा था सेट है कि, हालांकि वहाँ एक था था, तो यह लॉग में प्रकट नहीं हुआ था।

2

Symfony परियोजनाओं के लिए,/project'es ऐप्लिकेशन में फ़ाइलें जांच सुनिश्चित करें इस पोस्ट पर

अधिक विवरण उपलब्ध लॉग्स:
How to debug 500 Error in Symfony 2

Btw, अन्य चौखटे या सीएमएस इस तरह का व्यवहार का हिस्सा ।

0

सुनिश्चित करें कि आपकी फ़ाइल अनुमतियां सही हैं। अगर अपाचे को फ़ाइल को पढ़ने की अनुमति नहीं है तो यह लॉग को नहीं लिख सकता है।

+1

अपाचे के पास ओएस की परवाह किए बिना पहले से ही रूट अनुमतियां होनी चाहिए और इसलिए किसी भी फाइल को लिखने में सक्षम होना चाहिए, कभी भी अपनी लॉग फ़ाइल को ध्यान में रखें। –

+0

कोई अपाचे को रूट अनुमति नहीं होनी चाहिए। यह एक गंभीर सुरक्षा उल्लंघन होगा। –

1

कॉपी निम्न पेस्ट एक नया .htaccess फ़ाइल में और अपनी वेबसाइट के रूट फ़ोल्डर पर रखें:

php_flag display_errors     on 
php_flag display_startup_errors   on 

त्रुटियाँ सीधे अपने पेज में दिखाया जाएगा।

यह जल्दी से डीबग करने का सबसे अच्छा तरीका है लेकिन लंबे समय तक इसका उपयोग न करें क्योंकि यह एक सुरक्षा उल्लंघन हो सकता है।

संबंधित मुद्दे