Logs de erro do Apache - como exibir como página da Web (para servidor de intranet interno) quando o acesso root geralmente é feito?

1

Gostaria de poder exibir o error_log como uma página da web para que um colega (sem acesso root) possa ver isso para solucionar problemas de desenvolvimento em PHP.

Na minha máquina do CentOS 5.x, o log de erros está em: / var / log / httpd / error_log e os diretórios são apenas de acesso root.

Eu escreveria um script CGI para exibir o log, mas como isso é executado no processo do apache, isso não é raiz, portanto, o arquivo de log não pode ser acessado. (Tentei). O que me intriga é que, de alguma forma, o apache pode gravar nele para registrar erros, mesmo que os diretórios contidos sejam de acesso root.

Como eu poderia alcançar meu objetivo? Ou você pode sugerir uma alternativa, por favor?

    
por therobyouknow 20.12.2010 / 17:17

3 respostas

2

Na verdade, eu provavelmente não usaria minha outra resposta em algumas situações, mas vou mantê-la aqui como referência.

Se o seu colega tiver recebido o seu próprio VirtualHost, eu definiria esse virtualhost para gerar seus logs para um diretório diferente, para que eles pudessem ver apenas os erros do sistema:

<VirtualHost *:80>
    ServerName colleagues.vhost.com
    DocumentRoot ...
    ...
    ErrorLog /home/user/errorlog-colleagues.vhost.com
</VirtualHost>

Como alternativa, se os arquivos .htaccess estiverem ativados, faça com que eles simplesmente exibam seus logs de erros do php para um local desejado, por exemplo:

/path/to/webroot/.htaccess:

php_value error_log /home/user/phperrorlog-colleagues.vhost.com
    
por 20.12.2010 / 18:21
2

você pode alterar as permissões no arquivo ... se não, você pode ter um cron job que executa a cada minuto fazendo um rsync do arquivo de log do apache para um arquivo diferente (onde você pode definir permissões para ler) e exibir na página da web.

também existem maneiras de alterar o mecanismo de log do apache, dependendo da sua capacidade de alterar a configuração.

    
por 20.12.2010 / 17:23
1

Eu alteraria as permissões no diretório / var / log / httpd para resolver o problema de acessar os arquivos do console.

adicione um novo grupo e adicione o usuário a ele:

groupadd apache-logs
usermod -a -G apache-logs user
chgrp apache-logs /var/log/httpd
chmod g+rx /var/log/httpd

ou se você está feliz com qualquer usuário em seu sistema visualizando os logs, apenas:

chmod go+rx /var/log/httpd

O que você fizer, será redefinido para as permissões originais se você fizer o upgrade do httpd. Não deve mudar o contrário.

Além disso, o motivo pelo qual o apache pode gravar nos logs com as permissões padrão é porque os arquivos de log são abertos pelo apache enquanto são executados como root. Assim que o apache estiver totalmente carregado, ele mudará seu usuário para o apache, mas continuará a ter arquivos de log abertos.

    
por 20.12.2010 / 17:52