2008-08-01 14 views
96

अपाचे और PHP 5 चलाने वाले एक लिनक्स सर्वर पर, हमारे पास अलग-अलग लॉग फ़ाइलों के साथ एकाधिक वर्चुअल होस्ट हैं। हम वर्चुअल होस्ट्स के बीच php error_log को अलग नहीं कर सकते हैं।error_log?

httpd.conf के <Location> में इस सेटिंग को ओवरराइड करना कुछ भी प्रतीत नहीं होता है।

क्या प्रत्येक वर्चुअल होस्ट के लिए अलग php error_logs रखने का कोई तरीका है?

उत्तर

73

सबसे आसान तरीका है यह करने के लिए अपाचे (नहीं पीएचपी) लॉग इन करें, सेट करने के लिए क्या करना होगा:

<VirtualHost IP:Port> 
    # Stuff, 
    # More Stuff, 
    ErrorLog /path/where/you/want/the/error.log 
</VirtualHost> 

यदि कोई प्रमुख "/" यह माना जाता है रिश्तेदार।

Apache Error Log Page

+6

अपाचे त्रुटि लॉग, जो पीएचपी त्रुटि लॉग (अन्य टिप्पणी देखें) – thelem

+2

php के त्रुटि लॉग अपाचे के त्रुटि लॉग को डिफ़ॉल्ट रूप में अलग है कि यहाँ एक नजर डालें। – helloandre

+0

क्या सापेक्ष है? 'httpd.conf' की निर्देशिका में लिखा गया है, या? – mb21

8

डिफ़ॉल्ट व्यवहार अपाचे त्रुटि लॉग करने के लिए उत्पादन के लिए() error_log के लिए है। यदि यह नहीं हो रहा है तो त्रुटि_लॉग निर्देश के लिए अपनी php.ini सेटिंग्स जांचें - वर्तमान vhost के लिए अपाचे लॉग फ़ाइल का उपयोग करने के लिए इसे अनसेट करें।

+0

मैं जांच करूंगा। मुझे आश्चर्य है कि अभी भी अपाचे और PHP त्रुटि लॉग अलग होना संभव है जब हम डेवलपर्स को उनके कोड को अपाचे त्रुटि लॉग दिए बिना अपने कोड को डीबग करने का मौका देना चाहते हैं जिसमें अन्य संवेदनशील डेटा हो सकते हैं। –

12

मैं आम तौर पर सिर्फ एक .htaccess फ़ाइल या डोमेन मैं पर काम कर रहा हूँ पर vhost.conf में यह निर्दिष्ट करें। इसे इन फ़ाइलों में से एक में जोड़ें:

php_admin_value error_log "/var/www/vhosts/example.com/error_log" 
+1

क्या कोई भी 'php_admin_value' और' php_value' के बीच के अंतर पर टिप्पणी कर सकता है? –

+1

यह अंतर बताता है: http://mattiasgeniar.be/2012/02/18/php-php_value-vs-php_admin_value-and-the-use-of-php_flag-explained/ – Jeremy

5

मेरे अपाचे में httpd.conf में ऐसा कुछ था। बस Errorlog और CustomLog सेटिंग्स

<VirtualHost myvhost:80> 
    ServerAdmin webmas[email protected] 
    DocumentRoot /opt/web 
    ServerName myvhost 
    ErrorLog logs/myvhost-error_log 
    CustomLog logs/myvhost-access_log common 
</VirtualHost> 
+0

हम PHP लॉग के बारे में बात कर रहे हैं, अपाचे लॉग यहां नहीं है। – demonkoryu

5

आप अपने VirtualHost विन्यास को php_value error_log '/path/to/php_error_log जोड़ने की कोशिश की है बदलते हैं?

3

आप की कोशिश कर सकते:

<VirtualHost myvhost:80> 
     php_value error_log "/var/log/httpd/vhost_php_error_log" 
    </Virtual Host> 

लेकिन मुझे यकीन है कि अगर काम करने के लिए जा रहा है नहीं कर रहा हूँ। मैंने बिना किसी सफलता के मेरी साइटों पर कोशिश की।

5

हाँ, आप कोशिश कर सकते हैं,

php_value error_log "/var/log/php_log" 
.htaccess में

या आप उपयोगकर्ताओं को अपने स्क्रिप्ट की शुरुआत में ini_set() का उपयोग करता है, तो वे प्रवेश करना चाहते हो सकता है।

एक और विकल्प स्क्रिप्ट के साथ फ़ोल्डर में php.ini पर डिफ़ॉल्ट रूप से स्क्रिप्ट को सक्षम करने के लिए सक्षम होगा, फिर उपयोगकर्ता/होस्ट के रूट फ़ोल्डर पर जाएं, फिर सर्वर की रूट पर, या कुछ इसी तरह के। यह मेजबानों को अपना स्वयं का php.ini मान और अपने स्वयं के error_log स्थानों को जोड़ने की अनुमति देगा।

5
php_value error_log "/var/log/httpd/vhost_php_error_log" 

यह मेरे लिए काम करता है, लेकिन मुझे लॉग फ़ाइल की अनुमति बदलनी है।

या अपाचे error_log पर लॉग लिख देगा।

6

error_log सेट न करें जहां आपकी syslog सामग्री जाती है, eg /var/log/apache2, क्योंकि त्रुटियों को ErrorLog द्वारा अवरुद्ध कर दिया जाएगा।इसके बजाय, लॉग के लिए अपने प्रोजेक्ट फ़ोल्डर में subdir बनाएं और php_valueerror_log "/path/to/project/logs" करें। यह .htaccessफ़ाइलों और vhosts दोनों के लिए जाता है। यह भी सुनिश्चित करें कि आप

+0

दिलचस्प। क्या यह व्यवहार error_log फ़ाइल के पथ पर निर्भर करता है? – demonkoryu

131

पर php_flaglog_errors डाल किसी को देख आता है अगर यह इस तरह दिखना चाहिए बनाने:

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /var/www/domains/example.com/html 
    ErrorLog /var/www/domains/example.com/apache.error.log 
    CustomLog /var/www/domains/example.com/apache.access.log common 
    php_flag log_errors on 
    php_flag display_errors on 
    php_value error_reporting 2147483647 
    php_value error_log /var/www/domains/example.com/php.error.log 
</VirtualHost> 

यह केवल के बाद से display_error चालू है विकास के लिए है। आप देखेंगे कि अपाचे त्रुटि लॉग PHP त्रुटि लॉग से अलग है। अच्छी चीजें php.error.log में है।

error_reporting कुंजी http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

+6

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

+0

ध्यान दें कि "error_reporting" मान PHP के नए संस्करणों के साथ बदलता है क्योंकि वे अधिक त्रुटि स्तर जोड़ते हैं। अभी E_ALL = "3071 9"। – ReactiveRaven

+2

चूंकि "error_reporting" मान बदलते रहते हैं और चूंकि आप php के बाहर "E_ALL" और "E_STRICT" जैसे PHP स्थिरांक का उपयोग नहीं कर सकते हैं, इस प्रकार आप सुनिश्चित करते हैं कि आपके पास हमेशा सभी त्रुटियां लॉग हों: php_value error_reporting 2147483647 –

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

  • कोई संबंधित समस्या नहीं^_^