Apache 오류 로그 - 일반적으로 루트 액세스만 할 때 웹 페이지(내부 인트라넷 서버용)로 보는 방법은 무엇입니까?

Apache 오류 로그 - 일반적으로 루트 액세스만 할 때 웹 페이지(내부 인트라넷 서버용)로 보는 방법은 무엇입니까?

나는 동료(루트 액세스 권한 없이)가 PHP 개발 문제 해결을 위해 이를 볼 수 있도록 error_log를 웹 페이지로 표시하고 싶습니다.

내 CentOS 5.x 시스템에서 오류 로그는 /var/log/httpd/error_log에 있으며 디렉터리는 루트 액세스만 가능합니다.

로그를 표시하기 위해 CGI 스크립트를 작성했지만 이는 Apache 프로세스에서 실행되므로 루트가 아니므로 로그 파일에 액세스할 수 없습니다. (시도했습니다). 나를 당황하게 만드는 것은 포함된 디렉터리가 루트 액세스임에도 불구하고 어떻게든 Apache가 오류를 기록하기 위해 여기에 쓸 수 있다는 것입니다.

내 목표를 어떻게 달성할 수 있나요? 아니면 대안을 제안해 주실 수 있나요?

답변1

실제로 어떤 상황에서는 다른 답변을 사용하지 않을 수도 있지만 참고용으로 보관하겠습니다.

동료에게 자신의 VirtualHost가 제공된 경우 해당 가상 호스트가 로그를 다른 디렉터리에 출력하도록 설정하여 해당 시스템에 대한 오류만 볼 수 있도록 합니다.

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

또는 .htaccess 파일이 활성화된 경우 PHP 오류 로그를 원하는 위치에 출력하도록 하세요. 예:

/경로/to/webroot/.htaccess:

php_value error_log /home/user/phperrorlog-colleagues.vhost.com

답변2

파일에 대한 권한을 변경할 수 있습니다. 그렇지 않은 경우 아파치 로그 파일에서 다른 파일(읽기 권한을 설정할 수 있음)로 rsync를 수행하여 1분마다 실행되는 cron 작업을 가질 수 있습니다. 웹 페이지.

Apache에 대한 로깅 메커니즘을 변경할 수 있는 방법도 있습니다. 이는 구성 변경 능력에 따라 다릅니다.

답변3

콘솔에서 파일에 액세스하는 문제를 해결하기 위해 /var/log/httpd 디렉터리에 대한 권한을 변경하겠습니다.

새 그룹을 추가하고 여기에 사용자를 추가합니다.

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

또는 시스템의 사용자가 로그를 보는 것에 만족하는 경우 다음을 수행하십시오.

chmod go+rx /var/log/httpd

어느 쪽을 선택하든 httpd를 업그레이드하면 원래 권한으로 재설정됩니다. 그렇지 않으면 변경되어서는 안됩니다.

또한 Apache가 기본 권한으로 로그에 쓸 수 있는 이유는 Apache가 루트로 실행되는 동안 로그 파일이 Apache에 의해 열리기 때문입니다. Apache가 완전히 로드되자마자 사용자는 Apache로 변경되지만 로그 파일은 계속 열려 있습니다.

관련 정보