2011-01-21 4 views
1

PHPとCode Ignitorを初めて使用しています。動的データコンテンツを静的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

あなたはそれが印刷することを期待しますか? –

答えて

3

私はエラーを参照していませんか?

ob_start()は、ob_flush()が呼び出されるまで、すべての出力を抑制します。 を呼び出していないので、ob_start()の後には何も出力されません。それはあなたが目にしていることです、そして、それはまさにそれが動作するはずのやり方です。

本当の質問はあなたが達成しようとしていたものだと思いますか?

ob_start()は例外を生成しないため、try/catchブロックに配置しているため、コードスニペットはかなり混乱します。 ブロック内の何も例外を生成しないため、catchセクションは呼び出されません。

ここで何をしようとしていましたか?その答えは、より多くの指導をするのに役立ちます。バッファ出力が始まるはずですが、私の知る限り、あなたもバッファリングして出力現在の内容を終了するためにPHPを指示する必要が

+0

このようなエラーがない場合は、なぜ「エラー22222」というエコーが印刷されないのですか。 – Vicky

+0

@ Yashwant Chavan - これでコードは完全に変更されました.22222は最初のバージョンの質問にのみ適用されます。しかし、元の質問に基づいて、 '22222'は印刷されますが、ob_startが呼び出されたため、ブラウザに渡されるのではなく出力バッファに格納されます。 ob_flushを呼び出すと、ブラウザに送られます。しかし、更新されたコードはまったく異なっています。実際に何をしようとしているのかを簡単に見分けることができますが、理解を助けるために全く新しい答えを書く必要があります。 – Spudley