Pergunta

Em um servidor Linux executando Apache e PHP 5, temos vários hosts virtuais com arquivos de log separados.Não conseguimos separar o php error_log entre hosts virtuais.

Substituindo essa configuração no <Location> do httpd.conf parece não fazer nada.

Existe uma maneira de ter php separado error_logs para cada host virtual?

Foi útil?

Solução

Para definir o Apache (não o PHP) log, a maneira mais fácil de fazer isso seria:

<VirtualHost IP:Port>
   # Stuff,
   # More Stuff,
   ErrorLog /path/where/you/want/the/error.log
</VirtualHost>

Se não houver "/" inicial, será considerado relativo.

Página de registro de erros do Apache

Outras dicas

Se alguém vier procurar, deve ficar assim:

<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>

Isto é apenas para desenvolvimento, uma vez que display_error está ativado.Você notará que o log de erros do Apache é separado do log de erros do PHP.As coisas boas estão em php.error.log.

Dê uma olhada aqui para error_reporting chave http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

Eu normalmente apenas especifico isso em um .htaccess arquivo ou o vhost.conf no domínio em que estou trabalhando.Adicione isto a um destes arquivos:

php_admin_value error_log "/var/www/vhosts/example.com/error_log"

O comportamento padrão é que error_log() seja enviado para o log de erros do Apache.Se isso não estiver acontecendo, verifique as configurações do php.ini para a diretiva error_log - deixe-a sem configuração para usar o arquivo de log do Apache para o vhost atual.

Não defina error_log para onde seu syslog coisas vão, eg /var/log/apache2, porque os erros serão interceptados por ErrorLog.Em vez disso, crie um subdir na tua pasta de projeto para registros e faça php_value error_log "/path/to/project/logs".Isso vale para ambos .htaccess arquivos e vhosts.Certifique-se também de colocar php_flag log_errors sobre

Você já tentou adicionar o php_value error_log '/path/to/php_error_log à configuração do VirtualHost?

Sim, você pode tentar,

php_value error_log "/var/log/php_log" 

em .htaccess ou você pode fazer com que os usuários usem ini_set() no início de seus scripts se quiserem fazer log.

Outra opção seria permitir que os scripts fossem padronizados para o php.ini na pasta com o script, vá para a pasta raiz do usuário/host, depois para a raiz do servidor ou algo semelhante.Isso permitiria que os hosts adicionassem seus próprios php.ini valores e seus próprios error_log Localizações.

php_value error_log "/var/log/httpd/vhost_php_error_log"

Funciona para mim, mas preciso alterar a permissão do arquivo de log.

ou o Apache irá gravar o log no seu error_log.

Meu Apache tinha algo assim no httpd.conf.Basta alterar as configurações de 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>

Você poderia tentar:

    <VirtualHost myvhost:80>
       php_value error_log "/var/log/httpd/vhost_php_error_log"
    </Virtual Host>

Mas não tenho certeza se vai funcionar.Tentei em meus sites sem sucesso.

Crie VirtualHost simples:

exemplo de nome de host: - thecontrolist.localhost

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

    127.0.0.1 thecontrolist.localhost no arquivo hosts

  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ão se esqueça de reiniciar seu apache.para mais verificar esse link

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top