error_log par hôte virtuel?

Sur un serveur Linux exécutant Apache et PHP 5, nous avons plusieurs hôtes virtuels avec des fichiers journaux distincts. Nous ne pouvons pas sembler séparer le PHP error_log entre les hôtes virtuels.

Overriding this setting in the of the httpd.conf does not seem to do anything.

Existe-t-il un moyen d'avoir des PHP error_logs distincts pour chaque hôte virtuel?

0
ajouté édité
Vues: 2

8 Réponses

Je spécifie généralement ceci dans un fichier .htaccess 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"
0
ajouté
Ceci explique la différence: mattiasgeniar.be/2012/02/18/…
ajouté l'auteur Jeremy, source
Quelqu'un peut-il commenter la différence entre php_admin_value et php_value ?
ajouté l'auteur Nick M, source

Le comportement par défaut est error_log() à afficher dans le journal des erreurs Apache. Si ce n'est pas le cas, vérifiez vos paramètres php.ini pour la directive error_log - laissez le fichier journal Apache non utilisé pour le vhost en cours.

0
ajouté
Je vérifierai. Je me demande simplement s'il est toujours possible d'avoir un journal d'erreurs apache et PHP séparé quand on veut donner aux développeurs une chance de déboguer leur code sans leur donner le journal d'erreurs apache qui pourrait contenir d'autres données sensibles.
ajouté l'auteur Michael Stum, source

Pour définir le journal Apache ( pas le PHP ), la façon la plus simple de le faire serait de faire:


   # Stuff,
   # More Stuff,
   ErrorLog /path/where/you/want/the/error.log

S'il n'y a pas de "/", il est supposé être relatif.

Page du journal des erreurs Apache

0
ajouté
Par défaut, le journal des erreurs de PHP contient le journal des erreurs d'apache.
ajouté l'auteur helloandre, source
par rapport à quoi? le répertoire du httpd.conf dans lequel il est écrit, ou?
ajouté l'auteur mb21, source
comment cela pourrait-il être voté comme la meilleure réponse?
ajouté l'auteur fdsfdsfdsfds, source
C'est le journal des erreurs Apache, qui est séparé du journal des erreurs PHP (voir les autres commentaires)
ajouté l'auteur thelem, source

Si quelqu'un vient chercher ça devrait ressembler à ceci:


    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

Ceci est uniquement pour le développement puisque display_error est activé. Vous remarquerez que le journal des erreurs Apache est distinct du journal des erreurs PHP. Les bonnes choses sont dans php.error.log .

Take a look here for the error_reporting key http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

0
ajouté
Le fichier journal ne serait pas public. / html / est l'espace public.
ajouté l'auteur Clutch, source
Pourquoi voudriez-vous vous connecter à votre espace de domaine public?
ajouté l'auteur AlxVallejo, source
Puisque les valeurs "error_reporting" changent constamment et que vous ne pouvez pas utiliser les constantes PHP comme "E_ALL" et "E_STRICT" en dehors de PHP, c'est ainsi que vous vous assurez que TOUTES les erreurs sont toujours enregistrées: php_value error_reporting 2147483647
ajouté l'auteur Buttle Butkus, source
Selon votre configuration, vous devrez peut-être créer manuellement le fichier journal et définir le propriétaire / groupe sur le même utilisateur / groupe que celui utilisé par Apache. Apache ne vous avertira pas s'il ne peut pas écrire dans le fichier journal.
ajouté l'auteur Ian Dunn, source
Notez que la valeur "error_reporting" change avec les nouvelles versions de PHP car elles ajoutent plus de niveaux d'erreur. E_ALL = "30719" en ce moment.
ajouté l'auteur ReactiveRaven, source

Mon Apache avait quelque chose comme ça dans httpd.conf. Changez simplement les paramètres ErrorLog et CustomLog


    ServerAdmin [email protected]
    DocumentRoot /opt/web
    ServerName myvhost
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log common

0
ajouté
Nous parlons du journal PHP, pas du journal Apache ici.
ajouté l'auteur demonkoryu, source

Oui, vous pouvez 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 veulent avoir une journalisation.

Une autre option serait d'activer les scripts par défaut pour le php.ini dans le dossier avec le script, puis aller dans le dossier racine de l'utilisateur / hôte, puis à la racine du serveur, ou quelque chose de similaire. Cela permettrait aux hôtes d'ajouter leurs propres valeurs php.ini et leurs propres emplacements error_log .

0
ajouté

Avez-vous essayé d'ajouter le php_value error_log '/ path / to / php_error_log à votre configuration VirtualHost?

0
ajouté

Ne définissez pas error_log à l'emplacement de votre syslog , par exemple / var / log / apache2 , car ces erreurs seront interceptées par ErrorLog . Au lieu de cela, créez un sous-répertoire dans votre dossier de projet pour les journaux et faites php_value error_log "/ chemin / vers / projet / logs" . Cela vaut pour les fichiers .htaccess et vhosts . Assurez-vous également de mettre php_flag log_errors sur

0
ajouté
Intéressant. Ce comportement dépend-il du chemin du fichier error_log?
ajouté l'auteur demonkoryu, source