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 ?

Était-ce utile?

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.

Page du journal des erreurs Apache

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

  1. C:\Windows\System32\drivers\etc

    127.0.0.1 thecontrolist.localhost dans le fichier d'hôtes

  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. N'oubliez pas de redémarrer votre Apache.pour plus vérifier ce lien

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top