2009-11-05 18 views
19

यह 1000 बार पूछा गया है और मैंने इसे पोस्ट करने से पहले विभिन्न पोस्टों के माध्यम से ब्राउज़ किया है लेकिन मुझे कोई जवाब नहीं मिला है। जब तक मैं PHP के साथ prgramming रहा है, यह हमेशा काम करने के लिए एक दुःस्वप्न रहा है। क्या कोई मुझे बता सकता है कि मैं यहाँ क्या गलत कर रहा हूं?php error_log काम नहीं कर रहा

मेरे पास त्रुटि_रपोर्टिंग = e_ALL के साथ ini फ़ाइल में error_log सेट है। E_STRICT

मुझे और क्या याद आ रहा है? यह आमतौर पर मुझे यह दिया। मैं इस सेट को आईएनआई फाइल में चाहता हूं और मेरी स्क्रिप्ट में नहीं।

एक और दिलचस्प बात यह हो रही है कि जब मैं जानबूझ कर कोशिश करता हूं और मेरी स्क्रिप्ट में से एक में त्रुटि डालता हूं, तो अपाचे बार-बार फिर से शुरू होता है।


यह एक त्रुटि के बाद मेरा इवेंट लॉग है। टाइमस्टैम्प

Wed Nov 04 19:34:23 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Nov 04 19:34:23 2009] [notice] Server built: Sep 28 2009 22:41:08 
[Wed Nov 04 19:34:23 2009] [notice] Parent: Created child process 1700 
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Child process is running 
[Wed Nov 04 19:34:23 2009] [notice] Child 3008: Released the start mutex 
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Acquired the start mutex. 
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Starting 64 worker threads. 
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Starting thread to listen on port 80. 
[Wed Nov 04 19:34:24 2009] [notice] Child 3008: All worker threads have exited. 
[Wed Nov 04 19:34:24 2009] [notice] Child 3008: Child process is exiting 
[Wed Nov 04 19:34:53 2009] [notice] Parent: child process exited with status 128 -- Restarting. 
[Wed Nov 04 19:34:53 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Nov 04 19:34:53 2009] [notice] Server built: Sep 28 2009 22:41:08 
[Wed Nov 04 19:34:53 2009] [notice] Parent: Created child process 3656 
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Child process is running 
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Acquired the start mutex. 
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Starting 64 worker threads. 
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Starting thread to listen on port 80. 
[Wed Nov 04 19:34:53 2009] [notice] Parent: child process exited with status 128 -- Restarting. 
[Wed Nov 04 19:34:54 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Nov 04 19:34:54 2009] [notice] Server built: Sep 28 2009 22:41:08 
[Wed Nov 04 19:34:54 2009] [notice] Parent: Created child process 3980 
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Child process is running 
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Acquired the start mutex. 
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Starting 64 worker threads. 
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Starting thread to listen on port 80. 
[Wed Nov 04 19:34:54 2009] [notice] Parent: child process exited with status 128 -- Restarting. 
[Wed Nov 04 19:34:54 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Nov 04 19:34:54 2009] [notice] Server built: Sep 28 2009 22:41:08 
[Wed Nov 04 19:34:54 2009] [notice] Parent: Created child process 1600 
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Child process is running 
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Acquired the start mutex. 
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Starting 64 worker threads. 
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Starting thread to listen on port 80. 
[Wed Nov 04 19:34:55 2009] [notice] Parent: child process exited with status 128 -- Restarting. 
[Wed Nov 04 19:34:55 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Nov 04 19:34:55 2009] [notice] Server built: Sep 28 2009 22:41:08 
[Wed Nov 04 19:34:55 2009] [notice] Parent: Created child process 1068 
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Child process is running 
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Acquired the start mutex. 
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Starting 64 worker threads. 
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Starting thread to listen on port 80. 
[Wed Nov 04 19:34:55 2009] [notice] Parent: child process exited with status 128 -- Restarting. 
[Wed Nov 04 19:34:55 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Nov 04 19:34:55 2009] [notice] Server built: Sep 28 2009 22:41:08 
[Wed Nov 04 19:34:55 2009] [notice] Parent: Created child process 3220 
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Child process is running 
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Acquired the start mutex. 
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Starting 64 worker threads. 
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Starting thread to listen on port 80. 

उत्तर

9

तुम भी log_errors = On निर्धारित करने की आवश्यकता पर लूटने।

+3

हाय कैओस, धन्यवाद। मेरे पास पहले से ही सेट है। क्या मुझे कुछ और याद आ रही है? – Jim

+0

बस सर्वर को पुनरारंभ करें। – Aviator

-1

सुनिश्चित करें और यह भी

display_errors = On 

सेट और

error_reporting(E_ALL); 

कोशिश अपने कोड में। अक्सर बार मैं एक रनटाइम त्रुटि कॉन्फ़िगर स्क्रिप्ट शामिल करता हूं जो कि जब मैं विकास कर रहा हूं, तो त्रुटियों को बदल देता है, और जब मैं नहीं हूं तो उन्हें वापस बंद कर देता है। यह लगभग इस तरह कुछ दिखता है:

if ($debugmode == 'on') { 
    error_reporting(E_ALL); 
    ini_set("display_errors", 1); 
}else { 
    error_reporting(0); 
    ini_set("display_errors", 0); 
} 

उम्मीद है कि इससे मदद मिलती है।

** मैंने इसे सही ढंग से नहीं पढ़ा है, आप प्रदर्शन के बजाय त्रुटियों को लॉग करना चाहते हैं, उस स्थिति में कैओस का जवाब वह है जिसे आप ढूंढ रहे हैं।

+5

तो कृपया इस पोस्ट को हटाएं। – mauris

+1

हाय जेरेमी, मदद के लिए धन्यवाद। :) – Jim

1

मुझे क्यों नहीं समझता, लेकिन त्रुटि लॉग अब काम कर रहा है। मैंने जो किया था यह रहा। मैंने छोड़ दिया और error_log निर्देश वापस टिप्पणी की और आईएनआई फ़ाइल बंद कर दिया। मैंने अपाचे को अभी भी क्रैश करने के लिए पार्स त्रुटि के साथ स्क्रिप्ट चलाई और मुझे लॉग फ़ाइल में PHP त्रुटि मिली। यह अजीब है क्योंकि आईएनआई फ़ाइल में अब त्रुटि_लॉग सक्षम नहीं है और मेरी स्क्रिप्ट ini_set() का उपयोग नहीं कर रही है।

क्या किसी के पास इस पागलपन के लिए कोई स्पष्टीकरण है? इसके अलावा, अपाचे अब दुर्घटनाग्रस्त नहीं है।

+2

"पागलपन" एक बहुत अच्छी व्याख्या है। –

4

यदि error_log निर्देश सेट किया गया है, तो फ़ाइल का उपयोग php त्रुटियों को रिकॉर्ड करने के लिए किया जाएगा, जब यह सेट नहीं है त्रुटियों को अपाचे लॉग में लॉग किया जाएगा। http://us3.php.net/manual/en/errorfunc.configuration.php#ini.error-log पर एक नज़र डालें।

त्रुटि_लॉग फ़ाइल और निर्देशिका में यह उस उपयोगकर्ता द्वारा लिखने योग्य होना चाहिए जो अपाचे चल रहा है। अगर फ़ाइल नहीं बनाई जा रही है, तो शायद यह अनुमति अनुमति के कारण है।

मुझे यकीन नहीं है कि अपाचे आप पर क्यों दुर्घटनाग्रस्त हो रहा है, लेकिन मुझे लगता है कि यह किसी प्रकार की अनुमति समस्या है।

+0

मैं सही खड़ा हूं, धन्यवाद। मैंने अपना जवाब संपादित कर लिया है। – bradym

0

ब्रैडिम ने कहा, जांच करें कि क्या निर्देशिका में लिखने की अनुमति है कि आप PHP त्रुटि लॉग अपाचे उपयोगकर्ता के लिए स्थित है। यदि आपने लिखित अनुमतियों के साथ एक लॉग फ़ाइल बनाई है तो यह पर्याप्त नहीं है, डीआईआर उन्हें भी होना चाहिए।

0

त्रुटि_log = "सी: \ php \ log \ error।लॉग "मेरे लिए भी काम नहीं कर रहा था। मेरे लिए समाधान यह था कि आपको त्रुटि नहीं बनाना चाहिए। खुद को लॉग इन करें, क्योंकि PHP आपके लिए यह करेगा। See the PHP message board. मैं विंडोज 2008 सर्वर पर PHP 5.2 का उपयोग कर रहा हूं

7

जिस समस्या में मैंने भाग लिया था वह यह था कि मैंने जिस त्रुटि लॉग को नामित किया था वह सुरक्षित था। मेरी सभी .htaccess सेटिंग्स सही थीं, PHP सिर्फ त्रुटि लॉग पर नहीं लिख सका क्योंकि इसकी कोई अनुमति नहीं थी। यह मेरे लिए सही है:

chmod 777 watermellon-app-errors.log 

जाहिर है, आप जो कुछ भी फ़ाइल आप एक लॉग के लिए उपयोग कर रहे हैं करने के लिए लॉग बदलना चाहते हैं जा रहे हैं।

+4

क्या लॉग वास्तव में 777 की आवश्यकता है? 644 पर्याप्त नहीं है? –

+1

हां, आप सही हैं। बेशक, 644 शायद पर्याप्त नहीं हो सकता है अगर फ़ाइल का मालिक कोई और है। आप इसका परीक्षण करने के लिए 777 का उपयोग कर सकते हैं, और उसके बाद क्या काम करता है यह देखने के लिए अनुमतियां कम करें। –

+0

मेरे मामले में, मुझे 646 की आवश्यकता थी ..सिर्फ एफवाईआई अगर कोई और मेरी तरह की समस्या में चला जाता है – FastTrack

8

मामले anyo में ne किसी और मुसीबत त्रुटियों लॉग इन करने के लिए अपने स्थानीय विकास के वातावरण हो रही है, यहाँ क्या यह मेरे लिए तय है:

खिड़कियों पर, error_log पूर्ण पथ करने के लिए लॉग को error_log() के लिए काम करने के लिए (error_log = c:\apache\php_errors.log) स्थापित होना चाहिये। हालांकि, अगर कोई पथ के साथ error_log = php_errors.log, php अभी भी स्टार्टअप त्रुटियों लॉग इन करने में सक्षम हो जाएगा इस तरह के

PHP Startup: Unable to load dynamic library 'ext\php_mysqli.dll' - The specified module could not be found 
+0

मैंने पूर्ण पथ निर्दिष्ट किया और फ़ाइल को अग्रिम में नहीं बनाया। जब मैं WAMP को पुनरारंभ करता हूं तो लॉग फ़ाइल बनाई जाती है लेकिन WAMP एक पीला आइकन प्रदर्शित करता है और लोकलहोस्ट लोड नहीं होगा। कोई विचार क्या हो सकता है? जब मैं 'error_log' पर टिप्पणी करता हूं तो सब कुछ ठीक है लेकिन अपाचे लॉग में PHP त्रुटियां दिखाई देती हैं। – thomthom

0

जिस तरह से यह मेरी ubuntu पर काम करता है के रूप में (अपाचे 2.4.7, पीएचपी 5.5.9) निम्नलिखित है:

कमांड लाइन स्क्रिप्ट:

  • पथ अगर log_errors = Onerror_log द्वारा बताया में लॉग लिखता है। /etc/php5/cli/php.ini में सेटिंग्स; अपाचे के माध्यम से

वेब अनुरोध:

  • अगर log_errors = On (/etc/php5/apache2/php.ini), पथ वर्चुअलहोस्ट में ErrorLog अपाचे के निर्देश से बताया में संलग्न हो त्रुटि। यदि वह निर्देश मौजूद नहीं है, तो php.ini error_log पथ का उपयोग किया जाता है;
  • यदि log_errors = Off लॉग इन कहीं भी लिखे गए हैं;

जहाँ तक मुझे याद है के रूप में, यह लगभग इस तरह से लिनक्स के अधिकांश में काम किया

1

स्टैक्स आप फेडोरा, SELinux उपयोग कर रहे हैं (डिफ़ॉल्ट रूप से सक्षम) अपने लॉग में त्रुटियों जोड़कर से अपाचे/httpd पाएगा फ़ाइल को तब भी फ़ाइल करें जब आपकी फ़ाइल php.ini में निर्दिष्ट है और इसकी युक्त निर्देशिका में सभी अनुमतियां हैं।

अगर यह /var में आपके सिस्टम लॉग फ़ाइल को देखकर हो रहा है आप देख सकते हैं/log/संदेशों

enter image description here

आदर्श समाधान SELinux कॉन्फ़िगर करने के लिए लॉग फ़ाइल पर उपयोग की अनुमति है ।

त्वरित समाधान SELinux को अक्षम करने के लिए SELINUX को सेट करके /etc/selinux/config में SELinux को अक्षम करना है।

परिवर्तन को प्रभावी होने के लिए आपको ऐसा करने के बाद अपने सिस्टम को रीबूट करने की आवश्यकता होगी।

+1

आपके द्वारा दी गई सलाह वास्तव में उस सलाह को रोकने के लिए एक वेबसाइट है। http://stopdisablingselinux.com –

+1

मुझे पता है, इसलिए मेरा लेखन "आदर्श" है। मुझे अभी तक आश्वस्त नहीं है कि घरेलू उपयोगकर्ता को स्थानीय रूप से काम करने की आवश्यकता है SELinux चालू है। – Anthony

0

चेक पीएचपी-एफ पी एम स्पष्ट error_log की स्थापना नहीं कर रहा है:

सुनिश्चित करें कि फ़ाइल /etc/php-fpm.d/www.conf बनाओ error_log के लिए php_admin_value सेटिंग्स शामिल नहीं है। के लिए खोज के बाद और एक सेमी-कोलन का उपयोग कर उन्हें बाहर टिप्पणी:

systemctl restart php-fpm 

Apache .htaccess फ़ाइलों

का उपयोग कर error_log मान सेट नहीं कर रहे हैं की जाँच करें:

; NOTE: If these are set, ini_set('error_log', 'path') will have no effect 
; inside your php code, and this will be forced to be the value always. 
; php_admin_value[error_log] = /var/log/php-fpm/www-error.log 
; php_admin_flag[log_errors] = on 

फिर php-एफ पी एम को पुनः आरंभ अपाचे कॉन्फ़िगरेशन फ़ाइलों में php_admin_value सेटिंग्स ओवरराइड नहीं की जा सकती हैं, इसलिए सुनिश्चित करें कि आपके पास अपाचे कॉन्फ़िगरेशन फ़ाइलों में error_log सेटिंग के लिए कोई php_admin_value नहीं है। बस मामले में php_value सेटिंग्स के लिए भी जाँच करें।

PHP Website - How to change configuration settings

0

मेरे मामले में, एक CentOS विकास सर्वर पर, एक पूर्ण yum update के बाद अनुमति पर /var/log/http 700 में बदल गया था और 'जड़' के लिए उपयोगकर्ता है, तो उपयोगकर्ता अपाचे 'इसमें प्रवेश करने या लिखने में सक्षम नहीं था। यह अभी भी मौजूदा फ़ाइल /var/log/httpd/error.log में लिखने में सक्षम था लेकिन यह एक नई फ़ाइल बनाने में सक्षम नहीं था, क्योंकि मैं दिनांक-प्रत्यय लॉग फ़ाइलों का उपयोग करता हूं। आदेश जारी करना

chown apache /var/log/httpd 

समस्या हल हो गई।

0

यह मेरे लिए चाल है।

setsebool -P httpd_unified 1 

कृपया ध्यान दें, इस पसंदीदा विधि होगा नीचे पहली कोशिश करने के लिए:

semanage fcontext -a -t httpd_sys_rw_content_t 'errorLogNameHere.error.log 
restorecon -v 'errorLogNameHere.error.log' 

इस उत्तर इस आदेश पंक्ति को क्रियान्वित करने से लॉग से निकाला गया था:

journalctl -xe 

अधिक जानकारी सिस्टम पर मैं चल रहा था: PHP 7.0 और CentOS 7

यह सुनिश्चित नहीं है कि यह स्पष्ट नहीं है, लेकिन समस्या फाइल लिखने के लिए अपाचे की कॉन्फ़िगरेशन थी। मैंने chmod 777 कोशिश की, लॉगिंग निर्देशिका पर chmod a + w, लेकिन यह मेरे लिए काम नहीं किया।

आशा है कि यह किसी की मदद कर सकता है।