2017-04-26 1 views
-1

액세스가 거부 된 로그 파일에 거부 (denial) 이유와 함께 쓰기로되어있는 함수 forbid()이 있습니다. 웬일인지, 그것은 로그 파일에 쓰지 않고있다.403 헤더가 트리거되기 전에 fputs가 쓰여지지 않습니다.

// function to forbid access 
function forbid($reason) { 
    // explain why 
    if ($reason) fputs($file, "=== ERROR: " . $reason . " ===\n"); 
    fputs($file, "*** ACCESS DENIED ***" . "\n\n\n"); 
    fclose($file); 

    // forbid 
    header("HTTP/1.0 403 Forbidden"); 
    exit; 
} 

$file 이전 코드로 정의되고,이 기능 fputs() 전에 올바르게 다른 작업; 나는 403 글자가 쓰지 않는 것을 생각합니다.

+3

그리고 나는 그것이 함수 범위에 정의되지 않은'$ file'에 관한 것이라고 생각합니다. –

+0

함수 내에서'$ file'을 사용하고 싶다면'use' 문을 사용하거나 매개 변수로 함수에 직접 전달해야합니다. –

+0

명명 된 함수 정의이고,'use'는 익명 함수를위한 것입니다. –

답변

2

범위 문제와 비슷합니다. 함수이기 때문에 전역이 아닌 함수 범위에서 파일 핸들 $file을 찾고 있습니다. 함수에 파일 핸들을 전달해야합니다.

또한 오류보고 기능이 해제되어있어 문제가 발생하지 않는다고 가정합니다.

+0

아, 그랬습니다. 나는 내가 왜 그것을 생각하지 않았는지 모르겠다 :) 고마워! – JacobTheDev

관련 문제