error_log par hôte virtuel ?
-
08-06-2019 - |
Question
Sur un serveur Linux exécutant Apache et PHP 5, nous disposons de plusieurs hôtes virtuels avec des fichiers journaux séparés.Nous n'arrivons pas à séparer le php error_log
entre hôtes virtuels.
Remplacer ce paramètre dans le <Location>
de la httpd.conf
ne semble rien faire.
Existe-t-il un moyen d'avoir un php séparé error_logs
pour chaque hôte virtuel ?
La solution
Pour définir le Apache (pas le PHP) log, le moyen le plus simple de procéder serait de faire :
<VirtualHost IP:Port>
# Stuff,
# More Stuff,
ErrorLog /path/where/you/want/the/error.log
</VirtualHost>
S'il n'y a pas de "/" en tête, cela est considéré comme relatif.
Autres conseils
Si quelqu'un vient nous voir, cela devrait ressembler à ceci :
<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>
Ceci est uniquement destiné au développement puisque display_error
est allumé.Vous remarquerez que le journal des erreurs Apache est distinct du journal des erreurs PHP.Les bonnes choses sont là php.error.log
.
Jetez un oeil ici pour le error_reporting
clé http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
En général, je précise simplement cela dans un .htaccess
déposer ou le vhost.conf
sur le domaine sur lequel je travaille.Ajoutez ceci à l'un de ces fichiers :
php_admin_value error_log "/var/www/vhosts/example.com/error_log"
Le comportement par défaut est que error_log() soit affiché dans le journal des erreurs Apache.Si cela ne se produit pas, vérifiez vos paramètres php.ini pour la directive error_log - laissez-la désactivée pour utiliser le fichier journal Apache pour le vhost actuel.
Ne réglez pas error_log
à l'endroit où tu es syslog
les trucs vont, eg /var/log/apache2
, car leurs erreurs seront interceptées par ErrorLog
.Créez plutôt un subdir
dans ton dossier de projet pour les journaux et faire php_value
error_log "/path/to/project/logs"
.Cela vaut pour les deux .htaccess
fichiers et hôtes virtuels.Assurez-vous également de mettre php_flag
log_errors
sur
Avez-vous essayé d'ajouter le php_value error_log '/path/to/php_error_log
à votre configuration VirtualHost ?
Oui, tu peux essayer,
php_value error_log "/var/log/php_log"
dans .htaccess
ou vous pouvez demander aux utilisateurs d'utiliser ini_set()
au début de leurs scripts s'ils souhaitent avoir une journalisation.
Une autre option serait d'activer les scripts par défaut sur le php.ini
dans le dossier contenant le script, puis accédez au dossier racine de l'utilisateur/hôte, puis à la racine du serveur, ou quelque chose de similaire.Cela permettrait aux hôtes d'ajouter les leurs php.ini
valeurs et les leurs error_log
Emplacements.
php_value error_log "/var/log/httpd/vhost_php_error_log"
Cela fonctionne pour moi, mais je dois modifier l'autorisation du fichier journal.
ou Apache écrira le journal dans son error_log
.
Mon Apache avait quelque chose comme ça dans httpd.conf.Modifiez simplement les paramètres ErrorLog et 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 pourrais essayer:
<VirtualHost myvhost:80>
php_value error_log "/var/log/httpd/vhost_php_error_log"
</Virtual Host>
Mais je ne suis pas sûr que cela fonctionnera.J'ai essayé sur mes sites sans succès.
Créez un hôte virtuel simple :
exemple de nom d'hôte : - thecontrolist.localhost
C:\Windows\System32\drivers\etc
127.0.0.1 thecontrolist.localhost
dans le fichier d'hôtesC:\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>
N'oubliez pas de redémarrer votre Apache.pour plus vérifier ce lien