2012-09-02 3 views
-2

내 코드 :php - ob_start/fputs가 갑자기 작동하지 않습니다. 멈출 수있는 것이 있습니까?

function log_this($to_log, $prepend = null){ 

    ob_start(); 
    $fn = '../info.log';   
    $fp = fopen($fn, 'a'); 

    fputs($fp, "\r\rnew log -------- \r\r"); 

    if(isset($prepend)) fputs($fp, $prepend . ":\r\r"); 

    var_dump($to_log); 
    $content = ob_get_contents(); 

    fputs($fp, $content); 
    fclose($fp); 
    ob_end_clean(); 
} 

내가 항상 워드 프레스에서 일을 기록하는 내 로컬 환경 (MAMP)에 사용하는 기능입니다. 항상 효과가있었습니다. 이제 더 이상 작동하지 않습니다. 며칠 동안 이유를 이해하려고했지만 어떤 해결책도 찾을 수 없습니다. 나는 정말 진보 된 PHP 프로그래머가 아니므로 아마도 내가 모르는 뭔가가있을 수 있습니다. 누군가 제발 저를 도울 수 있습니까?

그런데 function_exists와 file_exists를 호출합니다. 내가 fputs가 작동하지 않는 이유를 모르겠어요

+2

"더 이상 작동하지 않습니다."라는 말은 정확히 아무 의미도 없습니다. 오류가 있습니까? 파일에'var_dump()'를 쓰지 않았습니까? 아니면 아무것도 쓰지 않았습니까 (즉,'new log --------'도 아닌가요?)? – lanzz

+0

'log_this' 함수가 호출 되었습니까? 함수에'error_log (__ METHOD __);'와 같은 것을 로깅하고 아파치 에러 로그에 값이 있는지 여부를 확인할 수 있습니까? – Kalpesh

+0

@lanzz : 내가 쓴 것처럼, 그 기능의 목적은 사물을 기록하는 것입니다. 그래서 더 이상 기록하지 않는다는 의미입니다. 필자가 작성한 것처럼 function_exists와 file_exists도 마찬가지입니다. info.log는 비어 있습니다. – Stratboy

답변

1

, 또한 그 가능성을 제거하기 위해 is_writable를 확인하는 조건을 추가 할 수 있습니다, 서버의 폴더 권한 (보통 0755 또는 0775 안전)와 함께 할 아마. file_get_contentsfile_put_contents을 사용해 보셨습니까?

define('FILE_PATH', 'path/to/file/file.log'); 
    function log_this($command, $array = null) { 
    //check if we can get to the file 
    if(file_exists(FILE_PATH)){ 
    $current = file_get_contents(FILE_PATH); 
    $current .= $command; 
    if(!is_null($array)){ 
    ob_start();print_r($array);$output = ob_get_clean(); 
    $current .= $output; 
    } 
    file_put_contents(FILE_PATH, $current); 
    } 
} 
+0

감사합니다. 결과를 게시하려고합니다. – Stratboy

+0

Ok man ... 하나 이상의 info.log 파일이 있다는 사실을 잊어 버렸습니다. 실제로이 파일은 실제로 찾고 있던 파일이 아니기 때문에 오류가 발생하지 않았습니다. 음 ... 여기 플러시 .. : P – Stratboy

관련 문제