error_log per host virtuale?
-
08-06-2019 - |
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?
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.
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
C:\Windows\System32\driver\ecc
127.0.0.1 thecontrolist.localhost
nel file hostC:\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>
Non dimenticare di riavviare il tuo Apache.per più controllo questo link