error_log pro virtuellem Host?
-
08-06-2019 - |
Frage
Auf einem Linux-Server mit Apache und PHP 5 haben wir mehrere virtuelle Hosts mit separaten Protokolldateien.Wir können das PHP anscheinend nicht trennen error_log
zwischen virtuellen Hosts.
Überschreiben dieser Einstellung im <Location>
des httpd.conf
scheint nichts zu bewirken.
Gibt es eine Möglichkeit, separates PHP zu haben? error_logs
für jeden virtuellen Host?
Lösung
Um das einzustellen Apache (nicht das PHP) log, der einfachste Weg, dies zu tun, wäre Folgendes:
<VirtualHost IP:Port>
# Stuff,
# More Stuff,
ErrorLog /path/where/you/want/the/error.log
</VirtualHost>
Wenn kein führendes „/“ vorhanden ist, wird davon ausgegangen, dass es relativ ist.
Andere Tipps
Wenn jemand vorbeischaut, sollte es so aussehen:
<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>
Dies dient seitdem nur der Entwicklung display_error
Ist eingeschaltet.Sie werden feststellen, dass das Apache-Fehlerprotokoll vom PHP-Fehlerprotokoll getrennt ist.Das Gute ist drin php.error.log
.
Schauen Sie hier nach error_reporting
Schlüssel http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
Normalerweise gebe ich dies einfach in einem an .htaccess
Datei oder Die vhost.conf
auf der Domain, an der ich arbeite.Fügen Sie dies einer dieser Dateien hinzu:
php_admin_value error_log "/var/www/vhosts/example.com/error_log"
Das Standardverhalten besteht darin, dass error_log() im Apache-Fehlerprotokoll ausgegeben wird.Wenn dies nicht der Fall ist, überprüfen Sie Ihre php.ini-Einstellungen für die error_log-Direktive – lassen Sie sie deaktiviert, um die Apache-Protokolldatei für den aktuellen vhost zu verwenden.
Nicht einstellen error_log
dorthin, wo du bist syslog
Sachen gehen, eg /var/log/apache2
, weil diese Fehler abgefangen werden ErrorLog
.Erstellen Sie stattdessen eine subdir
in deinem Projektordner für Protokolle und tun php_value
error_log "/path/to/project/logs"
.Das gilt für beides .htaccess
Dateien und vhosts.Stellen Sie außerdem sicher, dass Sie Folgendes angeben php_flag
log_errors
An
Haben Sie versucht, das hinzuzufügen? php_value error_log '/path/to/php_error_log
zu Ihrer VirtualHost-Konfiguration?
Ja, du kannst es versuchen,
php_value error_log "/var/log/php_log"
In .htaccess
Oder Sie können es von Benutzern verwenden lassen ini_set()
am Anfang ihrer Skripte, wenn sie eine Protokollierung wünschen.
Eine andere Möglichkeit wäre, Skripten die Standardeinstellung zu ermöglichen php.ini
im Ordner mit dem Skript, gehen Sie dann zum Stammordner des Benutzers/Hosts, dann zum Stammordner des Servers oder etwas Ähnliches.Dies würde es Gastgebern ermöglichen, ihre eigenen hinzuzufügen php.ini
Werte und ihre eigenen error_log
Standorte.
php_value error_log "/var/log/httpd/vhost_php_error_log"
Bei mir funktioniert es, aber ich muss die Berechtigung der Protokolldatei ändern.
oder Apache schreibt das Protokoll in die Datei error_log
.
Mein Apache hatte so etwas in httpd.conf.Ändern Sie einfach die Einstellungen „ErrorLog“ und „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>
Du könntest es versuchen:
<VirtualHost myvhost:80>
php_value error_log "/var/log/httpd/vhost_php_error_log"
</Virtual Host>
Aber ich bin mir nicht sicher, ob es funktionieren wird.Ich habe es auf meinen Websites versucht, ohne Erfolg.
Erstellen Sie einen einfachen VirtualHost:
Beispiel-Hostname:- thecontrolist.localhost
C:\Windows\System32\drivers\etc
127.0.0.1 thecontrolist.localhost
in der Hosts-DateiC:\xampp\apache\conf\extra\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>
Vergessen Sie nicht, Ihren Apache neu zu starten.für mehr überprüfen dieser Link