PHP त्रुटि लॉग को कहाँ संग्रहीत करता है? (php5, Apache, Fastcgi, cpanel)


392

मैं साझा होस्टिंग पर हूँ और इसमें Cpanel, Apache, PHP fastcgi द्वारा चलाया जाता है। PHP त्रुटि लॉग को कहाँ संग्रहीत करता है?

क्या कोई अन्य तरीका है जिससे मैं त्रुटि होस्टिंग पर साझा होस्टिंग वातावरण पर त्रुटि लॉग पा सकता हूं बजाय इसके कि संपूर्ण साइट संरचना से गुजरने के लिए error_log फ़ाइलों की तलाश करें?

मेरे पास पहुंच है php.ini(मैं PHP संस्करण 5.2.16 का उपयोग कर रहा हूं)।


25
पर लिनक्स, या तो /var/log/httpd/error_logया /var/log/apache2/error.log। ये फ़ाइलें रूट के स्वामित्व में हैं, इसलिए आपको sudoइसे देखने, या पढ़ने के लिए रूट होने या उपयोग करने की आवश्यकता है।
एरिक लेसचिंस्की

112
php --info | grep error
sjas

8
Windows समाधान की तलाश करने वालों के लिए, php --info | findstr /r /c:"error_log"यह देखने के लिए उपयोग करें कि लॉग फ़ाइल कहाँ है।
बूम

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

@soaku अगर आप fastcgi अपाचे का उपयोग करते हैं तो स्वयं PHP नहीं चलाते हैं। जब आप mod_php का उपयोग करते हैं जो अपाचे मॉड्यूल है, तो Apache php को संभालता है। इसका मतलब है कि mod_php का उपयोग करते समय त्रुटियां अपाचे लॉग में हो सकती हैं, लेकिन यह cgi या fastcgi का उपयोग करते समय कोई मामला नहीं होगा
Gall Annonim

जवाबों:


314

/var/log/apache2अगर PHP एक अपाचे 2 मॉड्यूल है , तो PHP स्टोर एरर लॉग करता है । साझा होस्ट अक्सर आपकी रूट डायरेक्टरी /logसबफ़ोल्डर में लॉग फ़ाइल संग्रहीत कर रहे हैं । लेकिन ... यदि आपके पास किसी php.iniफ़ाइल तक पहुंच है, तो आप ऐसा कर सकते हैं:

error_log = /var/log/php-scripts.log

Rinogo की टिप्पणी के अनुसार : यदि आप cPanel का उपयोग कर रहे हैं, तो जिस मास्टर लॉग फ़ाइल को आप संभवतः देख रहे हैं वह संग्रहीत है (डिफ़ॉल्ट रूप से)

/usr/local/apache/logs/error_log

यदि अन्य सभी विफल रहता है, तो आप लॉग फ़ाइल का उपयोग करके जाँच कर सकते हैं

<?php phpinfo(); ?>

20
"Php स्टोर्स त्रुटि लॉग / var / log / apache2 में होती है अगर php एक अपाचे 2 है" आरएचईएल आदि पर नहीं, जहां पैकेज का नाम 'httpd' है। कोई वास्तव में यह नहीं मान सकता है कि पैकेज का नाम डिस्ट्रोस के अनुरूप है।
chelmertz

28
FYI करें गोगलर्स के लिए - यदि आप cPanel का उपयोग कर रहे हैं, तो मास्टर लॉग फ़ाइल जिसे आप संभवतः ढूंढ रहे हैं (डिफ़ॉल्ट रूप से)/usr/local/apache/logs/error_log
rinogo

5
लेकिन <?php phpinfo(); ?>पथ की पुष्टि करने के लिए 'error_log' खंड की जांच करें
दोगुना करें

क्या होगा अगर यह एक अपाचे 2 मॉड्यूल नहीं है। उदाहरण के लिए यह nginx पर चलने वाले डेबियन का एक fpm पैकेज हो सकता है।
n611x007

2
phpinfo सेक्शन में यह कहां दिखाई देगा? error_log में मैं कुंजी / मान के लिए सभी देख रहा हूं 'error_log' और कोई वास्तविक पथ नहीं है
रॉबर्ट सिनक्लेयर

86

phpinfo()"Error_log" के लिए प्रयास करें और जांचें


13
यह सिर्फ कहता है error_log कोई पथ निर्दिष्ट नहीं है। मुझे लगता है कि यह शायद इसलिए हो सकता है क्योंकि यह एक साझा होस्टिंग एनवायरमेंट पर है और अगर हमारे पास इसका उपयोग होता है तो हम हर किसी को साइट त्रुटियों को देखेंगे।
PHPLOVER 15

8
@PHPLOVER अगर कोशिश करता है तो यह वही बात कहता है echo ini_get('error_log');?
chelmertz

मैंने कोशिश नहीं की, लेकिन उसने php.ini फ़ाइल में भी ऐसा ही कहा इसलिए मैंने जो किया वह php.ini फ़ाइल में पथ बदल दिया और यह देखने के लिए जाँच की कि क्या वह काम कर रहा है और यह है। क्या यह अभी भी सभी त्रुटियों को लॉग करता है, हालांकि मैंने त्रुटियों (दस्तावेज़ रूट के बाहर) लॉग करने का मार्ग बदल दिया है? धन्यवाद फ़्लोवर
PHPLOVER

2
@PHPLOVER: आप सेटिंग error_reporting(E_ALL|E_STRICT);se.php.net/manual/en/function.error-reporting.php
chelmertz के

3
मेरा कहना है error_log भी, कोई विचार नहीं है कि इसके लिए कहां देखना है। यह Google पर एनआर को हिट करता है लेकिन इसका जवाब नहीं देता है।
एचएमआर

53

लिनक्स

php --info | grep error 

टर्मिनल त्रुटि लॉग स्थान को आउटपुट करेगा।

खिड़कियाँ

php --info | findstr /r /c:"error_log"

कमांड प्रॉम्प्ट त्रुटि लॉग स्थान को आउटपुट करेगा

लॉग स्थान सेट करने के लिए

अपने को खोलें php.iniऔर निम्नलिखित पंक्ति जोड़ें:

error_log = /log/myCustomLog.log

धन्यवाद @chelmertez , @Boom इन के लिए (प्रश्न पर टिप्पणी)।


5
linux पर im। यह मेरे लिए एक लॉग स्थान का उल्लेख नहीं करता है।
सेरेक्स

1
@ साइरेक्स php -infoकुछ भी आउटपुट करता है? आपको यह सुनिश्चित करने की आवश्यकता है कि phpवास्तव में PHP को चलाने के लिए कॉल किया जा रहा है ...
Cullub

1
इसके अलावा, यह संभव है कि php वर्तमान में कुछ भी लॉग नहीं कर रहा है। यदि ऐसी स्थिति है, तो आप अपने को खोल सकते हैं php.iniऔर सेट error_reportingकर सकते हैं E_ALL & ~E_DEPRECATED & ~E_STRICT, या जो भी त्रुटियां आप देखना चाहते हैं, उसके बाद error_logनिर्देशिका में उस पथ पर सेट करें जहां आप चाहते हैं कि आपकी त्रुटियां लॉग इन हो जाएं। (नोट: यह एक निर्देशिका के लिए एक फ़ाइल के लिए एक पूर्ण पथ नहीं है।)
कुल्लू

1
मुझे केवल पुराने लॉग / var / log / httpd / में मिले, जहां ज्यादातर लोग देखने की सलाह देते हैं, लेकिन दौड़ने php --info | grep logने मुझे / var / www / लॉग की ओर इशारा किया , जहां सबसे हाल के लॉग स्थित थे।
क्रिसबॉक

1
एक बार जब आप लॉग लोकेशन सेट कर लेते हैं, तो Apache रिस्टार्ट करना न भूलें:sudo /etc/init.d/apache2 restart
BrianHenryIE

31

LAMP वातावरण में php त्रुटियां डिफ़ॉल्ट रूप से इस फ़ाइल के लिए निर्देशित होती हैं।

/var/log/httpd/error_log

सभी एक्सेस लॉग के अंतर्गत आते हैं:

/var/log/httpd/access_log

तो php एरर लॉग फाइल स्पेसिफिकेशन के बारे में कमेंट करें और यह सिर्फ यहाँ लिखा जाएगा?
उपयोगकर्ता

17

लिनक्स पर अपनी PHP त्रुटि लॉग कैसे पाते हैं:

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log

एक और समकक्ष तरीका:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log

12

ऐसा प्रतीत होता है कि डिफ़ॉल्ट php द्वारा त्रुटियों को कहीं भी लॉग इन नहीं किया जाता है, error_logphp.ini की कुंजी को सभी इंस्टॉल में देखा गया है।

आम तौर पर मैं:

  1. php.ini फ़ाइलों के लिए देखें। locate php.ini
  2. error_reportingमान के लिए इन फ़ाइलों को खोजें ;

    जो आपके लिए php लॉग स्तरों के समामेलन के लिए निर्धारित किया जाना चाहिए। ,

    उदाहरण के लिए: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. error_logयह सुनिश्चित करने के लिए मान की जाँच करें कि यह एक वास्तविक स्थान की ओर इशारा करता है और बाहर टिप्पणी नहीं की गई है।

    डिफ़ॉल्ट मान एक पूर्ण पथ नहीं देता है, केवल एक फ़ाइल नाम है, मुझे नहीं पता कि यह पथ सामान्य रूप से कहां हल होता है। शायद /var/log/


11

अपने php.ini फ़ाइल में error_log चर सेट करते समय आपको निरपेक्ष पथ का उपयोग करना चाहिए , अन्यथा, त्रुटि लॉग आपके रिश्तेदार पथ के अनुसार संग्रहीत किए जाएंगे।

error_log = /var/log/php.errors

अन्य समाधान सरल स्क्रिप्ट लिख रहा होगा जो निर्देशिका ट्री से सभी त्रुटि लॉग फ़ाइलों की सूची देगा।


10

यह तब भी हो सकता है /var/log/apache2/error.logजब आप google कंप्यूट इंजन में हों।

और आप पूंछ को इस तरह देख सकते हैं:

tail -f /var/log/apache2/error.log

5

आप स्रोत से निर्माण अपाचे और PHP है, तो डिफ़ॉल्ट रूप से त्रुटि लॉग अपने पर उत्पन्न होता है ${Apache install dir}/logs/error_logयानी आम तौर पर /usr/local/apache2/logs/error_log। इसके अलावा, यदि आपने इसे रिपॉजिटरी से स्थापित किया है, तो आपको यह मिल जाएगा /var/log/apache2/error_log। आप अपने में php.iniभी पथ सेट कर सकते हैं और इसे इनवॉइस करने के लिए सत्यापित कर सकते हैं phpinfo()


5

सबसे अच्छा तरीका है कि आप अपनी httpd.conf फ़ाइल में देखें और देखें कि डिफ़ॉल्ट क्या है। यह आपके विशिष्ट वर्चुअल होस्ट द्वारा ओवरराइड भी किया जा सकता है। मैं देखकर /etc/httpd/conf/httpd.confया /etc/apache2/httpd.confत्रुटि_लॉग की खोज करके शुरू करता हूं। इसे या तो / var / log / httpd / error_log के /var/log/apache2/error_logरूप में सूचीबद्ध किया जा सकता है या इसे भी बस के रूप में सूचीबद्ध किया जा सकता है logs/error_log

इस मामले में यह एक सापेक्ष पथ है, जिसका अर्थ है कि यह निम्न होगा /etc/httpd/logs/error_log। यदि आप अभी भी इसे अपनी httpd.conf फ़ाइल के निचले भाग की जांच नहीं कर पा रहे हैं और देखें कि आपके वर्चुअल होस्ट कहाँ शामिल हैं। यह /etc/httpd/conf.d/<- "अन्य" या "अतिरिक्त" के रूप में हो सकता है। आपका वर्चुअल होस्ट इसे तब ओवरराइड कर सकता है जब ErrorLog "/ path / to / error_log"।


4

Php.ini में अपनी त्रुटि लॉग फ़ाइल को कॉन्फ़िगर करते समय, आप एक निरपेक्ष पथ या एक रिश्तेदार पथ का उपयोग कर सकते हैं। जनरेटिंग स्क्रिप्ट के स्थान के आधार पर एक सापेक्ष पथ को हल किया जाएगा, और आपके पास प्रत्येक निर्देशिका में एक लॉग फ़ाइल मिलेगी। यदि आप चाहते हैं कि आपके सभी त्रुटि संदेश उसी फ़ाइल पर जाएं, तो एक पूर्ण पथ का उपयोग करें। फ़ाइल।

यहाँ और देखें: http://www.php.net/manual/en/ref.errorfunc.php#53025


धन्यवाद, इससे मेरी समस्या हल हो गई। रिश्तेदार परिभाषाओं के लिए वास्तव में लंगड़ा व्यवहार, लॉग फ़ाइलों को सभी htdocs फ़ोल्डर में फैल गया है, और कोई विचार नहीं है जहां पर देखना शुरू करना है। मैं अन्य सेटिंग्स के रूप में, स्थापना फ़ोल्डर के सापेक्ष होने की उम्मीद करूंगा। +1।
एडुआर्डो

4

NGINX आमतौर पर इसे /var/log/nginx/error.log या access.log में संग्रहीत करता है। (किसी भी मामले में उबंटू पर)


4
php --info | grep error

यह मददगार है। सवाल पर sjas द्वारा टिप्पणी की। इसलिए मैंने इसे एक उत्तर के रूप में शामिल किया।


2
(ऐसा लगता है) यह Apache सेटिंग्स के बजाय PHP कमांड लाइन सेटिंग्स (जैसे /etc/php/7.1/cli/php.ini) के लिए मूल्य को आउटपुट करता है।
ब्रायनहेनरी

3

यदि आप php5-fpm का उपयोग करते हैं, तो लॉग इन डिफ़ॉल्ट होना चाहिए

/var/log/php5-fpm.log

2

जहाँ भी आप इसे चाहते हैं, यदि आप इसे अपना फ़ंक्शन कॉल सेट करते हैं: error_log ($ errorMessageforLog। "\ n", 4, 'somePath / SomeFileName.som');


2

के लिए httpd.conf फ़ाइल खोजें ErrorLogचलाकर cat <file location> | grep ErrorLogकमांड लाइन पर। उदाहरण के लिए:

$ cat /etc/apache2/httpd.conf | grep ErrorLog

आउटपुट:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"

उस लाइन को खोजें जो शुरू होती है ErrorLogऔर आपका उत्तर है।

नोट: वर्चुअल होस्ट के लिए, आप httpd-vhosts.confएक अलग लॉग फ़ाइल स्थान को निर्दिष्ट करने के लिए वर्चुअल होस्ट फ़ाइल को संपादित कर सकते हैं ।


2

cPanel त्रुटि लॉग में स्थित हैं:

/ Usr / स्थानीय / cpanel / लॉग /

/ Usr / स्थानीय / अपाचे / लॉग /

डिफ़ॉल्ट रूप से Apche लॉग अंदर स्थित हैं:

/ Var / log / अपाचे

या

/ Var / log / apache2

यदि कोई कस्टम लॉग लोकेशन का उपयोग कर रहा है तो आप इस कमांड को चलाकर इसकी जांच कर सकते हैं:

cat / etc / apache2 / conf /httpd.conf | grep ErrorLog

यदि आपको त्रुटि हो रही है कि apache2 निर्देशिका मौजूद नहीं है, तो आप सही स्थान खोजने के लिए इस कमांड को चला सकते हैं:

इसके अलावा

या

जिसमें अपाचे 2 है


1
  1. आप फ़ाइल प्रबंधक चेक लॉग फ़ोल्डर में जा सकते हैं।
  2. public_html फोल्डर में लॉग फाइल चेक करें।
  3. "php phpinfo ()" फ़ाइल की जाँच करें जहाँ लॉग स्टोर है।

1

आप साझा परिवेश पर हैं और त्रुटि लॉग नहीं पा सकते हैं, हमेशा जांचें कि क्या cPanel के पास आपके cPanel डैशबोर्ड पर त्रुटियां हैं। यदि आप त्रुटि लॉग को खोजने में सक्षम नहीं हैं, तो आप इसे वहां पा सकते हैं।

CPanel सर्च बार, एरर एरर पर, यह एरर पेज दिखाएगा, जो मूल रूप से अलग-अलग http एरर पेज और अन्य एरर की लिस्ट है, जहां एरर लॉग प्रदर्शित होते हैं।

साझा वातावरण देखने के लिए अन्य स्थान: / घर / अपने नाम / लॉग / घर / अपने नाम / public_html / error_log


1

कुछ इस तरह :

sudo locate error.log | xargs -IX grep -iH "errorlog" X

या

sudo locate error_log | xargs -IX grep -iH "errorlog" X

या

sudo find / -iname "error?log" 2>/dev/null | xargs -IX grep -iH "errorlog" X

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.