2009-07-29 7 views
15

디버그 출력의 개행을 허용하거나 금지하는 PHP 구성 설정은 무엇입니까?PHP 오류 로그 및 개행 문자

두 가지 설치 (MAMP/OSX를 실행하는 dev 랩톱과 debian 서버에서 debian 실행)에서 디버깅 할 때 오류 로그에 다른 결과가 표시됩니다. 이 OSX에

[Thu Jul 30 11:32:34 2009] [error] [client 118.93.246.104] Array\n(\n [0] => 1\n [1] => 2\n [2] => 4\n)\n, referer: http://dev.example.org/ 

로 /var/log/apache2/error.log에 나타납니다 데비안에

error_log(print_r(array(1,2,4),1)); 

[30-Jul-2009 11:34:00] Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 4 
) 
로/응용 프로그램/MAMP가/로그/php_error_log 나타납니다

디버깅을 위해 MAMP 방식을 선호합니다 (로그 파일을/Applications 디렉토리로 재배치하는 것을 제외하고).

감사합니다.

답변

12

Chris, 데비안의 php.ini에서 error_log 지시어를 변경하여 파일을 가리킬 수 있어야합니다. 이것이 정의되지 않은 경우, 여러 줄을 지원하지 않는 syslog를 통과합니다.

세부 사항 :

error_log 기능

error_log 지시어 나는 이것에 대한 좋은 해결책을 와서 단지 그것에 대해 블로그에

+0

아파치가 실행되는 사용자가 권한 문제로 인해 지정된 error_log 파일에 쓸 수 없다면 syslog 또는 Apache 로그로 이동한다는 점도 언급해야합니다. – Pistos

-2

, 사람들에게 도움이 될 수 있습니다 http://www.drcoen.com/2012/05/php-error_log-and-newlines-a-solution/. TL : DR :/tmp에 직접 작성한 파일에 디버그 정보를 쓰고 Apache의 로깅 경로를 지정하는 함수를 작성합니다 (따라서 2 개의 오류 파일을 추적 할 필요가 없습니다).

+0

감사합니다. AFAICT 이것은 "/ tmp에 새 파일을 만들어 사용 권한 제한을 해결하는 것"입니다. @Pistos의 권한 단서는 결국 나에게 없어서는 재료였습니다. –

+0

링크가 작동하지 않아 답변에 자세한 지침이 포함되어 있지 않습니다. – Innovaat

+1

다음은 최신 링크입니다. 변경된 사항을 알지 못했습니다. http://www.drcoen.com/2012/05/php-error_log-and-newlines-a-solution/ 다운 투표를 통해 어려움을 겪었습니다. 내가 할 수없는 원래의 문제를 해결할 수 없다면 도움이 될 것입니다 (그러므로 해결 방법). – eclipse31

2

이 문제는 Apache 프로세스가 error_log 파일에 쓸 수 없기 때문에 발생합니다. 따라서 syslog는 파일에 대신 기록합니다. syslog는 줄 바꿈을 엉망으로 만듭니다.

그래서 그냥 수행

chmod 777 error.log 

이이 문제를 해결해야한다.

+3

공격자가 쓸 수있는 파일에 go + x를주의하십시오. 대신 그룹 읽기/쓰기 및 그룹 소유권을 웹 서버 사용자에게 설정하십시오. 로그 회전 (logrotate config의 chmod 설정 등)에서 설정 변경에 대한 권한 변경을주의하십시오. –

+0

이것은 다소 안전하지 않다고 동의합니다. (로그 파일이 웹 서버를 통해 액세스 할 수 없기를 바랍니다.)하지만 로컬 개발 환경에서는 빠르며 중요한 문제를 지적합니다. 로그 파일은 아파치가 그것에 쓰는 것을 막을 수 있으며 대신 syslog를 사용하게됩니다. –

+1

내 자신의 솔루션은 Chris Burgess의 추천과 같았습니다. 웹 서버가 실행되는 그룹에 내 사용자를 추가하고 그룹의 모든 권한을 허용하도록 파일의 권한을 변경했으며 웹 서버가 실행되는 사용자/그룹의 파일 소유권을 변경했습니다. , 즉 미리 설치된 아파치를 가진 OSX에서 : '''sudo dseditgroup -o edit -a myusername -t user _www; sudo chown _www : _www/var/log/apache2/error_log; sudo chmod 770/var/log/apache2/error_log; ''' –