2011-01-21 121 views
1

我是PHP和代碼點火器的新手,在嘗試將動態數據內容轉換爲靜態HTML文件時遇到了一些問題。這是代碼片段。當我請求代碼片段文件時,它只打印錯誤111111111沒有別的。無法理解這裏的錯誤。PHP ob_start無法正常工作

這是我的原始代碼,這裏試圖生成帶有動態內容的靜態html文件。它不適用於我

<?php 
    echo "Error 111111111"; 
    ob_start(); 
    $fileName = "sample.html"; 
?> 
<html> 
<body> 
    Some html is here  
</body> 
</html> 
<?php 
    try{ 
      $output = ob_get_contents(); // get contents of trapped output 

      //write to file, e.g. 
      $newfile = $fileName; 
      $file = fopen ($newfile, "w"); 
      fwrite($file, $output); 
      fclose ($file); 
      ob_end_clean(); // discard trapped output and stop trapping 
    }catch (Exception $ex){     
     echo "Error ".$ex->getMessage(); 
    }  

?> 
+1

你還指望它來打印? – 2011-01-21 10:41:28

回答

3

我沒有看到錯誤?

ob_start()取消所有輸出,直到調用ob_flush()。你沒有撥打ob_flush(),所以沒有輸出ob_start()。這就是你所看到的,而這正是它應該工作的方式。

我想真正的問題是你想達到什麼目的?

該代碼片段相當混亂,因爲ob_start()不會產生任何異常,但您已將其放入try/catch塊中。您的catch部分將永遠不會被調用,因爲try塊中的任何內容都不會生成任何異常。

那麼你想在這裏做什麼?答案可能會幫助我們給你更多的指導。

+0

如果沒有這樣的錯誤,那麼爲什麼它不打印回聲「錯誤22222」; – Vicky 2011-01-21 10:42:36

1

ob_start標記出緩衝輸出應該開始,但據我所知,你也必須告訴PHP結束緩衝和輸出的當前內容:ob_end_flush()