Domanda

Su un server Linux con Apache e PHP 5, abbiamo più host virtuali con file di registro separati.Sembra che non riusciamo a separare il file php error_log tra host virtuali.

Sostituendo questa impostazione nel file <Location> del httpd.conf non sembra fare nulla.

C'è un modo per avere php error_logs per ciascun host virtuale?

È stato utile?

Soluzione

Per impostare il Apache (non il PHP) log, il modo più semplice per farlo sarebbe fare:

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

Se non c'è una "/" iniziale si presuppone che sia relativa.

Pagina del registro degli errori di Apache

Altri suggerimenti

Se qualcuno viene a cercarlo dovrebbe assomigliare a questo:

<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>

Questo è per lo sviluppo solo da allora display_error è acceso.Noterai che il registro degli errori di Apache è separato dal registro degli errori di PHP.La roba buona è arrivata php.error.log.

Dai un'occhiata qui per il error_reporting chiave http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

Di solito lo specifico semplicemente in un file .htaccess file O IL vhost.conf sul dominio su cui sto lavorando.Aggiungilo a uno di questi file:

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

Il comportamento predefinito prevede che error_log() venga visualizzato nel log degli errori di Apache.Se ciò non accade, controlla le impostazioni di php.ini per la direttiva error_log: lasciala non impostata per utilizzare il file di registro Apache per il vhost corrente.

Non impostare error_log dove il tuo syslog le cose vanno, eg /var/log/apache2, perché gli errori verranno intercettati ErrorLog.Creare invece un file subdir nel tuo cartella del progetto per i registri e fare php_value error_log "/path/to/project/logs".Questo vale per entrambi .htaccess file e vhost.Assicurati anche di mettere php_flag log_errors SU

Hai provato ad aggiungere il php_value error_log '/path/to/php_error_log alla configurazione del tuo VirtualHost?

Sì, puoi provare,

php_value error_log "/var/log/php_log" 

In .htaccess oppure puoi fare in modo che gli utenti lo utilizzino ini_set() all'inizio dei loro script se vogliono avere la registrazione.

Un'altra opzione sarebbe quella di abilitare gli script per impostazione predefinita su php.ini nella cartella con lo script, quindi vai alla cartella root dell'utente/host, quindi alla root del server o qualcosa di simile.Ciò consentirebbe agli host di aggiungere i propri php.ini valori e i propri error_log posizioni.

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

Funziona per me, ma devo modificare l'autorizzazione del file di registro.

oppure Apache scriverà il registro nel file its error_log.

Il mio Apache aveva qualcosa di simile in httpd.conf.Basta modificare le impostazioni ErrorLog e 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>

Potresti provare:

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

Ma non sono sicuro che funzionerà.Ho provato sui miei siti senza successo.

Crea un host virtuale semplice:

nome host di esempio:- thecontrolist.localhost

  1. C:\Windows\System32\driver\ecc

    127.0.0.1 thecontrolist.localhost nel file host

  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. Non dimenticare di riavviare il tuo Apache.per più controllo questo link

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top