2016-04-28 6 views
1

Ich betreibe viele VirtualHosts in Apache, keiner von ihnen alle so aufregend. Gibt es einen einfacheren Weg als php_value error_log /var/log/www-site/error.log für jeden VirtualHost anzugeben?PHP-Fehler standardmäßig auf Apache VirtualHost protokollieren ErrorLog

Jeder Virtualhost hat immer seine ErrorLog Satz:

<VirtualHost *:443> 
    DocumentRoot /var/www-site 
    ServerName site.me 
    ServerAlias www.site.me 

    CustomLog /var/log/www-site/access.log combined 
    ErrorLog /var/log/www-site/error.log 
</VirtualHost> 

Gibt es eine Einstellung in Apache, wo es Sie PHP-Fehler zu Apache seine Fehlerprotokolldateien standardmäßig anmelden können, ohne sie angeben zu müssen?

Antwort

2

PHP hat, soweit mir bekannt ist, keinen Zugriff auf die ErrorLog-Direktive von Apache, so dass es nicht automatisch alle Fehler am selben Ort protokollieren kann. Wenn Sie es verwenden können, sollten Sie sich mod_macro (https://httpd.apache.org/docs/2.4/mod/mod_macro.html) ansehen. Es ist standardmäßig seit Apache 2.4.6 verfügbar, kann aber auf niedrigeren Versionen manuell installiert werden.

Es würde Ihnen erlauben, Ihre Fehlerprotokollzeilen an einer Stelle zu definieren und dann alle von ihnen mit einer einzelnen Zeile in jedem vhost einzuschließen.

error_macro.conf

<Macro error_logs $site> 
    php_value error_log /var/log/$site/error.log 
    CustomLog /var/log/$site/access.log combined 
    ErrorLog /var/log/$site/error.log 
</Macro> 

In jedem Virtual

Use error_logs www-site 
+0

Woah, das ist ziemlich süß! Ich könnte dies erweitern, indem ich auch 'DocumentRoot' auf'/var/www- $ site' setze, richtig, für noch weniger benutzerdefinierte Typisierung? – Mave

+0

Ja, genau. Alles, was eure Vhosts gemeinsam haben, ist sinnvoll, um ein Makro einzufügen. Beachten Sie, dass sie zusätzliche Argumente annehmen können - - wenn Sie mehr als eine Sache eingeben müssen. – iainn