error_log por host virtual?
-
08-06-2019 - |
Pregunta
En un servidor Linux que ejecuta Apache y PHP 5, tenemos varios hosts virtuales con archivos de registro separados.Parece que no podemos separar el php. error_log
entre hosts virtuales.
Anular esta configuración en el <Location>
del httpd.conf
no parece hacer nada.
¿Hay alguna manera de tener php separado? error_logs
para cada Host Virtual?
Solución
Para configurar el apache (no el PHP) iniciar sesión, la forma más sencilla de hacerlo sería hacer:
<VirtualHost IP:Port>
# Stuff,
# More Stuff,
ErrorLog /path/where/you/want/the/error.log
</VirtualHost>
Si no hay un "/" inicial, se supone que es relativo.
Otros consejos
Si alguien viene a buscar, debería verse así:
<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>
Esto es sólo para el desarrollo ya que display_error
está prendido.Notará que el registro de errores de Apache está separado del registro de errores de PHP.Lo bueno está en php.error.log
.
Echa un vistazo aquí para el error_reporting
llave http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
Normalmente solo especifico esto en un .htaccess
archivo o el vhost.conf
en el dominio en el que estoy trabajando.Agregue esto a uno de estos archivos:
php_admin_value error_log "/var/www/vhosts/example.com/error_log"
El comportamiento predeterminado es que error_log() envíe el mensaje al registro de errores de Apache.Si esto no sucede, verifique la configuración de php.ini para la directiva error_log; déjela sin configurar para usar el archivo de registro de Apache para el vhost actual.
No establezcas error_log
a donde tu syslog
las cosas van, eg /var/log/apache2
, porque sus errores serán interceptados por ErrorLog
.En lugar de eso, cree un subdir
en tus carpeta de proyecto para registros y hacer php_value
error_log "/path/to/project/logs"
.esto va para ambos .htaccess
archivos y hosts virtuales.Asegúrate también de poner php_flag
log_errors
en
¿Has intentado agregar el php_value error_log '/path/to/php_error_log
a su configuración de VirtualHost?
Sí, puedes intentarlo.
php_value error_log "/var/log/php_log"
en .htaccess
o puedes hacer que los usuarios usen ini_set()
al principio de sus scripts si quieren tener registro.
Otra opción sería permitir que los scripts utilicen de forma predeterminada el php.ini
en la carpeta con el script, luego vaya a la carpeta raíz del usuario/host, luego a la raíz del servidor, o algo similar.Esto permitiría a los anfitriones agregar sus propios php.ini
valores y propios error_log
ubicaciones.
php_value error_log "/var/log/httpd/vhost_php_error_log"
A mí me funciona, pero tengo que cambiar el permiso del archivo de registro.
o Apache escribirá el registro en su error_log
.
Mi Apache tenía algo como esto en httpd.conf.Simplemente cambie la configuración de ErrorLog y 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>
Tu podrías intentar:
<VirtualHost myvhost:80>
php_value error_log "/var/log/httpd/vhost_php_error_log"
</Virtual Host>
Pero no estoy seguro de si va a funcionar.Lo intenté en mis sitios sin éxito.
Crear un host virtual simple:
nombre de host de ejemplo: - thecontrolist.localhost
C:\Windows\System32\drivers\etc.
127.0.0.1 thecontrolist.localhost
en el archivo de hostsC:\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>
No olvide reiniciar su Apache.para más controlar este enlace