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?

War es hilfreich?

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.

Apache-Fehlerprotokollseite

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

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

    127.0.0.1 thecontrolist.localhost in der Hosts-Datei

  2. C:\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>
    
  3. Vergessen Sie nicht, Ihren Apache neu zu starten.für mehr überprüfen dieser Link

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top