2012-09-02 39 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(); 
} 

這是一個功能我總是在我的本地環境(毫安)使用從WordPress的事情。 它一直工作。現在它不再工作了。我試圖理解爲什麼幾天但找不到任何解決方案。我不是一個非常先進的PHP程序員,所以也許有一些我不知道,應該..任何人都可以幫助我嗎?

順便說一下,function_exists和file_exists,從我稱之爲的地方。

+2

你說「它不再工作」,這意味着什麼都沒有。你有錯誤嗎?你是否沒有寫入'var_dump()'寫入文件,或者你是否寫入了_nothing_(即使不是'new log --------')? – lanzz

+0

你確定'log_this'函數被調用?你可以在你的函數中記錄'error_log(__ METHOD __);'並檢查你是否在apache錯誤日誌中有價值? – Kalpesh

+0

@lanzz:正如我寫的,該函數的目的是記錄事物。所以我的意思是它不再記錄。就像我寫的那樣,function_exists和file_exists也是如此。 info.log保持空白。 – Stratboy

回答

1

我不知道爲什麼fputs不工作,它可能是與你的服務器文件夾的權限(通常07550775是安全的),還可以添加一個條件,以檢查is_writable消除這種可能性。您是否嘗試過使用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

好吧,我忘記了我有多個info.log文件,並且該函數沒有拋出任何錯誤,因爲它實際上是在寫一個真正的文件,而不是我正在查看的文件。嗯...這裏沖洗..:P – Stratboy

相關問題