2017-02-28 9 views
1

PHP 스크립트 내부에서 AWStats 업데이트를 트리거하려고합니다.PHP에서 awstats 업데이트 트리거

현재 크론 작업을 사용하여 업데이트를 실행하고 스크립트의 exec 함수에 명령 줄을 복사하기 만했습니다.

if(exec("/path/to/awstats.pl -config=domain.com -update")) { 
    echo 'Logs processed'; 
} 

그러나 이것은 거짓 긍정을 반환합니다. "처리 된 로그"행이 표시되지만 AWStats는 통계 정보를 처리하지 않았습니다.

AWStats는 직접 방문했을 때 완벽하게 작동하며 cron 작업을 통해 업데이트를 실행하면이 PHP 스크립트에만 포함되지 않습니다. 오류 로그를 확인했는데 스크립트 또는 AWStats 시간 초과로 인해 문제가 없습니다.

내가 누락 된 항목이 있습니까?

기록을 위해이 스크립트는 이전 데이터를 제거하고 스팸을 차단하도록 리퍼러의 블랙리스트를 업데이트 한 다음 로그 파일에서 통계 데이터를 다시 컴파일하도록 설계되었습니다. 예, SkipReferrerBlackList 지시문을 사용하여 성능 문제가 있음을 알고 있습니다.

+0

는 cronjob를이 PHP 스크립트와 같은 사용자로 실행됩니까 :

명령의 출력을 인쇄해야 문제를 디버깅하려면? – aross

+0

@aross 아, 공유 호스팅 서버에 있습니다. 나는 그렇게 믿는다. 그러나 나는 확실히 모른다. –

+0

스크립트가 쓰는 파일에 수동으로 무언가를 추가하십시오. PHP 스크립트에서. 그것은 단지 허가 문제 일 수 있습니다. – aross

답변

1

exec이 성공 또는 실패를 나타내는 부울을 반환한다고 생각하는 것으로 보입니다. 그것은 단지 문자열 (명령의 마지막 출력 행)을 리턴합니다. 문자열 ("0" 및 빈 문자열 제외)은 항상 true로 평가됩니다.

exec("/path/to/awstats.pl -config=domain.com -update", $output); 
echo join(PHP_EOL, $output); 
+0

고마워요, @aross. 예, 제대로 생각하지 않고 부울 응답을 가정했습니다. 나는 또한 PHP 스크립트가'.pl' 파일을 실행할 수있는 권한이 없다고 생각하고 출력은 배열이었다고 생각한다. 이것으로부터 스크립트가 실행할 수있는'.cgi' 파일을 생성하여 해결책을 찾았습니다. –