%20quando%20o%20acesso%20root%20%C3%A9%20normalmente%3F.png)
Gostaria de poder exibir o error_log como uma página da web para que um colega (sem acesso root) possa visualizá-lo para solucionar problemas de desenvolvimento de PHP.
Na minha máquina CentOS 5.x, o log de erros está em: /var/log/httpd/error_log e os diretórios são apenas para acesso root.
Eu escreveria um script CGI para exibir o log, mas como é executado no processo Apache, não é root, 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 que os contêm sejam de acesso root.
Como eu poderia alcançar meu objetivo? Ou você pode sugerir uma alternativa, por favor?
Responder1
Na verdade, provavelmente não usaria minha outra resposta em algumas situações, mas vou mantê-la aí para referência.
Se o seu colega recebeu seu próprio VirtualHost, eu configuraria esse virtualhost para gerar seus logs em um diretório diferente, para que eles vissem apenas erros em seu sistema:
<VirtualHost *:80>
ServerName colleagues.vhost.com
DocumentRoot ...
...
ErrorLog /home/user/errorlog-colleagues.vhost.com
</VirtualHost>
Alternativamente, se os arquivos .htaccess estiverem habilitados, faça com que eles simplesmente enviem seus logs de erros php para um local desejado, por exemplo:
/caminho/para/webroot/.htaccess:
php_value error_log /home/user/phperrorlog-colleagues.vhost.com
Responder2
você pode alterar as permissões no arquivo ... caso contrário, você pode ter um cron job que é executado a cada minuto fazendo um rsync do arquivo de log do Apache para um arquivo diferente (onde você pode definir permissões para leitura) e depois exibi-lo no página da Internet.
também existem maneiras de alterar o mecanismo de log do Apache, isso depende da sua capacidade de alterar a configuração.
Responder3
Eu mudaria as permissões no diretório /var/log/httpd para resolver o problema de acesso aos 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ê estiver satisfeito com qualquer usuário em seu sistema visualizando os logs, apenas:
chmod go+rx /var/log/httpd
Faça o que fizer, as permissões originais serão redefinidas se você atualizar o httpd. Não deveria mudar de outra forma.
Além disso, a razão pela qual o Apache pode gravar nos logs com as permissões padrão é porque os arquivos de log são abertos pelo Apache enquanto ele é executado como root. Assim que o apache estiver totalmente carregado, ele mudará seu usuário para apache, mas continuará com arquivos de log abertos.