वर्चुअल होस्ट के अनुसार error_log?


113

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

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

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

जवाबों:


81

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

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

यदि कोई अग्रणी नहीं है "/" ​​तो इसे सापेक्ष माना जाता है।

अपाचे त्रुटि लॉग पेज


7
यह अपाचे त्रुटि लॉग है, जो PHP त्रुटि लॉग के लिए अलग है (अन्य टिप्पणियाँ देखें)
Thelem

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

141

अगर कोई आता है तो उसे इस तरह देखना चाहिए:

<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 के लिए यहां एक नज़र डालें


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

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

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

आप अपने सार्वजनिक डोमेन स्थान में अपना लॉग क्यों चाहते हैं?
AlxVallejo

1
लॉग फ़ाइल सार्वजनिक नहीं होगी। / html / सार्वजनिक स्थान है।
क्लच

13

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

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

1
किसी php_admin_valueऔर के बीच अंतर पर टिप्पणी कर सकते हैं php_value?
Nick M

1
यह अंतर बताता है: Mattiasgeniar.be/2012/02/18/…
जेरेमी

9

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


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

7

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


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

6

क्या आपने php_value error_log '/path/to/php_error_logअपने VirtualHost कॉन्फ़िगरेशन को जोड़ने की कोशिश की है?


6

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

php_value error_log "/var/log/php_log" 

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

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


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

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

या अपाचे इसके लॉग को लिख देगा error_log


5

मेरी अपाचे ने httpd.conf में ऐसा कुछ किया था। बस ErrorLog और CustomLog सेटिंग बदलें

<VirtualHost myvhost:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /opt/web
    ServerName myvhost
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log common
</VirtualHost>

1
हम यहां PHP लॉग की बात कर रहे हैं, अपाचे लॉग की नहीं।
डेन्कोरियो

4

तुम कोशिश कर सकते हो:

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

लेकिन मुझे यकीन नहीं है कि यह काम करने वाला है। मैंने अपनी साइटों पर बिना किसी सफलता के प्रयास किया।


2

सरल वर्चुअलहोस्ट बनाएँ:

उदाहरण होस्टनाम: - thecontrolist.localhost

  1. C: \ Windows \ System32 \ drivers \ etc

    127.0.0.1 thecontrolist.localhost मेजबान फ़ाइल में

  2. C: \ XAMPP \ अपाचे \ conf \ अतिरिक्त \ httpd-vhosts.conf

    <VirtualHost *>
      ServerName thecontrolist.localhost
      ServerAlias thecontrolist.localhost
      DocumentRoot "/xampp/htdocs/thecontrolist"
      <Directory "/xampp/htdocs/thecontrolist">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    
  3. अपनी अपाचे पुनः आरंभ करने के लिए मत भूलना। इस लिंक की अधिक जाँच के लिए

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