PHP는 오류 로그를 어디에 저장합니까? (php5, 아파치, fastcgi, cpanel)


392

나는 공유 호스팅에 Cpanel, Apache, PHP가 fastcgi에 의해 운영되고 있습니다. PHP는 오류 로그를 어디에 저장합니까?

error_log 파일을 찾기 위해 전체 사이트 구조를 거치지 않고 공유 호스팅 환경에서 오류 로그를 찾을 수있는 다른 방법이 있습니까?

php.ini(PHP 버전 5.2.16을 사용 하고 있습니다)에 액세스 할 수 있습니다 .


25
Linux에서 /var/log/httpd/error_log또는 /var/log/apache2/error.log. 이 파일은 루트가 소유하므로 루트이거나 sudo이를 보거나 사용 하여 읽어야합니다.
Eric Leschinski

112
php --info | grep error
sjas

8
Windows 솔루션을 찾는 사용자 php --info | findstr /r /c:"error_log"는 로그 파일의 위치를 ​​확인하십시오.

1
웹 사이트를 호스팅하고 PHP 로그가 Apache 로그와 동일한 파일에 저장되어 있습니다 ... 관리자 패널의 로그에 전체 Apache 오류 로그를 표시하는 옵션이 있습니다. 예를 들어 사용자가해서는 안되는 장소를 입력하는 데 오류가 있습니다. 그러나 동일한 파일 에는 PHP에서 표시 한 오류가 있습니다.
RedClover

@soaku fastcgi 아파치 자체를 사용하면 PHP를 실행하지 않습니다. 아파치 모듈 인 mod_php를 사용하면 아파치가 PHP를 처리합니다. 즉, mod_php를 사용할 때 오류가 아파치 로그에있을 수 있으며 아마도 cgi 또는 fastcgi를 사용할 때는 그렇지 않습니다
Gall Annonim

답변:


314

PHP /var/log/apache2가 apache2 모듈 인 경우 PHP는 오류 로그를 저장 합니다. 공유 호스트는 종종 루트 디렉토리 /log하위 폴더 에 로그 파일을 저장합니다 . 그러나 ... php.ini파일에 액세스 할 수 있다면 다음과 같이 할 수 있습니다.

error_log = /var/log/php-scripts.log

rinogo 의 의견 에 따르면 : cPanel을 사용하는 경우 찾고있는 마스터 로그 파일은 기본적으로 다음 위치에 저장됩니다.

/usr/local/apache/logs/error_log

다른 모든 방법이 실패하면 다음을 사용하여 로그 파일의 위치를 ​​확인할 수 있습니다.

<?php phpinfo(); ?>

20
"PHP는 RHEL 등이 아닌, PHP가 apache2 인 경우 / var / log / apache2에 오류 로그를 저장합니다"(여기서 패키지 이름은 'httpd'임) 패키지 이름이 배포판에서 일관성이 있다고 가정 할 수는 없습니다.
chelmertz

28
Google 직원에게 참고-cPanel을 사용하는 경우 찾고있는 마스터 로그 파일은 기본적으로/usr/local/apache/logs/error_log
rinogo에

5
하지만 'error_log'섹션 <?php phpinfo(); ?>을 확인하여 경로를 확인하십시오
doub1ejack

apache2 모듈이 아닌 경우 어떻게해야합니까? 예를 들어, nginx에서 실행되는 데비안의 fpm 패키지 일 수 있습니다.
n611x007 9

2
phpinfo 섹션에서 어디에 표시됩니까? error_log에서 키 / 값에 대한 모든 것은 'error_log'이며 실제 경로는 없습니다.
Robert Sinclair

86

시도 phpinfo()와 "의 error_log"확인


13
그것은 단지 말한다 에서는 error_log되지 지정되지 경로를. 공유 호스팅 환경에 있기 때문일 수 있으며 액세스 권한이 있으면 다른 모든 사이트 오류가 표시됩니다.
PHPLOVER

8
@PHPLOVER는 시도해도 똑같은 말을 echo ini_get('error_log');합니까?
chelmertz

나는 그것을 시도하지 않았지만 php.ini 파일에서 동일하다고 말 했으므로 php.ini 파일의 경로를 변경하고 작동하는지 확인했습니다. 오류를 로그 경로로 변경했지만 (문서 루트 외부) 여전히 모든 오류를 기록합니까? 감사합니다 phplover
PHPLOVER

2
@PHPLOVER : error_reporting(E_ALL|E_STRICT);se.php.net/manual/en/function.error-reporting.php
chelmertz

3
내 말은 error_log도 어디에서 찾을 지 모릅니다. 이것은 Google에서 1을 쳤지 만 대답하지는 않습니다.
HMR

54

리눅스

php --info | grep error 

터미널은 오류 로그 위치를 출력합니다.

윈도우

php --info | findstr /r /c:"error_log"

명령 프롬프트는 오류 로그 위치를 출력합니다

로그 위치를 설정하려면

를 열고 php.ini다음 줄을 추가하십시오.

error_log = /log/myCustomLog.log

이것에 대해 @chelmertez , @Boom 에게 감사드립니다 (질문에 대한 의견).


5
리눅스에서 메신저. 이것은 나를 위해 로그 위치를 언급하지 않습니다.
Sirex

1
@Sirex는 php -info아무것도 출력 하지 않습니까? 당신은 확실히 만들 필요가 php실제로 PHP 실행 호출 ...
Cullub

1
또한 php가 현재 아무것도 기록하지 않았을 수도 있습니다. 그런 경우, 당신은 열 수 php.ini및 설정을 error_reportingE_ALL & ~E_DEPRECATED & ~E_STRICT, 또는 당신이보고 원하는 오류, 다음 설정 error_log당신이 당신의 오류가 기록 얻을하려는 디렉토리 경로에. (참고 : 이것은 파일의 전체 경로가 아니라 디렉토리의 경로입니다.)
Cullub

1
나는 / var / log / httpd /에서 오래된 로그 만 찾았 지만 대부분의 사람들이 찾는 것이 좋습니다 php --info | grep log.
ChrisBob

1
로그 위치를 설정 한 후에는 Apache를 다시 시작해야합니다.sudo /etc/init.d/apache2 restart
BrianHenryIE

31

램프 환경에서 PHP 오류는 기본적으로 아래 파일로 지정됩니다.

/var/log/httpd/error_log

모든 액세스 로그는 다음과 같습니다.

/var/log/httpd/access_log

PHP 오류 로그 파일 사양을 주석 처리하면 여기에 작성됩니까?
사용자

17

Linux에서 PHP 오류 로그를 찾는 방법 :

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log

또 다른 동등한 방법 :

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log

12

기본적으로 php 어디에서나 오류를 기록하지 않는 것으로 보입니다 error_log.php.ini 의 키는 내가 본 모든 설치에서 주석 처리됩니다.

일반적으로 나는 :

  1. php.ini 파일을 찾으십시오. locate php.ini.
  2. 이 파일에서 error_reporting값을 검색하십시오 .

    어느 것이 PHP 로그 레벨의 융합으로 충분하다면 설정해야합니다. ,

    예 : E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. 검사 error_log가 실제 장소를 가리키는 및 주석 있지 않은지 확인하는 값입니다.

    기본값은 전체 경로를 제공하지 않고 파일 이름 만 제공 하므로이 경로가 정상적으로 해결되는 위치를 모르겠습니다. 아마 /var/log/.


11

php.ini 파일에서 error_log 변수를 설정할 때는 절대 경로를 사용해야 합니다. 그렇지 않으면 상대 경로에 따라 오류 로그가 저장됩니다.

error_log = /var/log/php.errors

다른 해결책은 디렉토리 트리의 모든 오류 로그 파일을 나열하는 간단한 스크립트를 작성하는 것입니다.


10

/var/log/apache2/error.logGoogle 컴퓨팅 엔진을 사용하는 경우 에도 가능 합니다.

그리고 당신은 다음과 같이 꼬리를 볼 수 있습니다 :

tail -f /var/log/apache2/error.log

5

소스에서 Apache와 PHP를 빌드 한 경우 기본적으로 오류 로그가 생성됩니다 ( ${Apache install dir}/logs/error_log일반적으로) /usr/local/apache2/logs/error_log. 그렇지 않으면 저장소에서 설치 한 경우 /var/log/apache2/error_log경로를 찾을 수 있습니다. 경로를 설정 php.ini하고을 호출하여 확인할 수도 있습니다 phpinfo().


5

가장 좋은 방법은 httpd.conf 파일을보고 기본값이 무엇인지 확인하는 것입니다. 특정 가상 호스트에 의해 재정의 될 수도 있습니다. /etc/httpd/conf/httpd.confor 를보고 시작하여 /etc/apache2/httpd.conferror_log를 검색합니다. / var / log / httpd / error_log /var/log/apache2/error_log로 표시 될 수도 있고 간단히 표시 될 수도 있습니다 logs/error_log.

이 경우 상대 경로이므로 아래에 /etc/httpd/logs/error_log있습니다. 여전히 찾을 수 없으면 httpd.conf 파일의 맨 아래를 확인하고 가상 호스트가 포함 된 위치를 확인하십시오. /etc/httpd/conf.d/<-에 "other"또는 "extra"로있을 수 있습니다. 가상 호스트는 ErrorLog "/ path / to / error_log"로 가상 호스트를 재정의 할 수 있습니다.


4

php.ini에서 오류 로그 파일을 구성 할 때 절대 경로 또는 상대 경로를 사용할 수 있습니다. 상대 경로는 생성 스크립트의 위치에 따라 해결되며 스크립트가있는 각 디렉토리에 로그 파일이 표시됩니다. 모든 오류 메시지를 동일한 파일로 보내려면 절대 경로를 사용하십시오. 파일.

자세한 내용은 여기를 참조하십시오 : http://www.php.net/manual/en/ref.errorfunc.php#53025


고마워, 이것은 내 문제를 해결했다. 로그 파일이 htdocs 폴더 전체에 퍼지도록하고, 어디서부터 시작해야할지 모릅니다. 다른 설정과 마찬가지로 설치 폴더와 관련이 있어야합니다. +1.
Eduardo

4

NGINX는 보통 /var/log/nginx/error.log 또는 access.log에 저장합니다. (어쨌든 우분투에서)


4
php --info | grep error

도움이됩니다. 질문에 sjas가 댓글을 달았습니다. 그래서 나는 그것을 대답으로 포함시켰다.


2
(아파치 설정이 아닌 PHP 명령 행 설정 값 (예 : /etc/php/7.1/cli/php.ini))을 출력합니다.
BrianHenryIE


2

원하는 곳에 함수 호출을 설정하면 error_log ($ errorMessageforLog. "\ n", 4, 'somePath / SomeFileName.som');


2

명령 행에서 ErrorLog실행 하여 httpd.conf 파일을 검색하십시오 cat <file location> | grep ErrorLog. 예를 들면 다음과 같습니다.

$ cat /etc/apache2/httpd.conf | grep ErrorLog

산출:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"

로 시작하는 줄을 찾으십시오 ErrorLog.

참고 : 가상 호스트의 경우 가상 호스트 파일 httpd-vhosts.conf을 편집하여 다른 로그 파일 위치를 지정할 수 있습니다.


2

cPanel 오류 로그는 다음 위치에 있습니다.

/ usr / local / cpanel / logs /

/ usr / local / apache / logs /

기본적으로 Apche 로그는 다음과 같습니다.

/ var / log / apache

또는

/ var / log / apache2

누구나 사용자 정의 로그 위치를 사용하는 경우 다음 명령을 실행하여 위치를 확인할 수 있습니다.

고양이 / etc / apache2 / conf /httpd.conf | grep ErrorLog

apache2 디렉토리가 존재하지 않는다는 오류가 발생하면이 명령을 실행하여 올바른 위치를 찾을 수 있습니다.

아파치 어 is 어

또는

아파치 2


1
  1. 파일 관리자 확인 로그 폴더로 이동할 수 있습니다.
  2. public_html 폴더의 로그 파일을 확인하십시오.
  3. 로그가 저장되어있는 "php phpinfo ()"파일을 확인하십시오.

1

공유 환경에 있으며 오류 로그를 찾을 수 없습니다. cPanel 대시 보드에서 cPanel에 옵션 오류가 있는지 항상 확인하십시오. 오류 로그를 찾을 수없는 경우 오류 로그를 찾을 수 있습니다.

cPanel 검색 막대에서 Error를 검색하면 기본적으로 다른 http 오류 페이지의 목록 인 오류 페이지가 표시되고 다른 오류는 오류 로그가 표시되는 위치입니다.

공유 환경을 살펴볼 다른 장소 : / home / yourusername / logs / home / yourusername / public_html / error_log


1

이 같은 :

sudo locate error.log | xargs -IX grep -iH "errorlog" X

또는

sudo locate error_log | xargs -IX grep -iH "errorlog" X

또는

sudo find / -iname "error?log" 2>/dev/null | xargs -IX grep -iH "errorlog" X

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.