2

私たちのウェブサイトは数年前から稼働していて、何かが変わって本当に奇妙です。ホスティングと話をしようとしましたが、何も解決されません。

問題は、最初にインクルードされたファイルの最初のタグの前のすべてが<?php、OBに入る直前に出力されることです。

例えば:

<?php
ob_start();
?>
<h1>Welcome</h1>
<?php 
include('contentbox1.php'); 
include('contentbox2.php'); 
include('contentbox3.php'); 
?>
<b>Bye</b>
<?php
$content = ob_get_contents();
ob_end_clean();
echo("Included{".$content."}");
?>

出力されるのはこれです:(<h1>Welcome</h1>バッファ内に出力された残りのコンテンツとは異なることに注意してください)

<h1>Welcome</h1>
Included{
<div id="contentbox1"></div>
<div id="contentbox2"></div>
<div id="contentbox3"></div>
<b>Bye</b>
}

正しい出力はどうあるべきか(そして私のローカルマシン上にある):

Included{
<h1>Welcome</h1>
<div id="contentbox1"></div>
<div id="contentbox2"></div>
<div id="contentbox3"></div>
<b>Bye</b>
}

それは私たちのサイトに大きな問題を引き起こしていて、私はその理由を理解できません。それは私のローカルマシンで完全に機能しますが、私たちが何年も一緒に使用してきたホスティングではありません。

解決策: を再アップロードしているときtest.phpに、ウェブサイト上のコンテンツのボックスや他の多くのファイルがおかしくなり、破損している可能性があります。サイト全体を再アップロードすると(コードの変更は発生していませんが)、実行速度が遅いサイトは非常に高速になり、すべての問題が解消されました。私は他のホストでもファイルが破損しているので、将来奇妙なものがある場合はこれを覚えておいてください。

4

2 に答える 2

4

これがob_get_cleanの動作方法であるため、コードは正しく実行されます。

ob_get_clean()

ob_get_clean — Get current buffer contents and delete current output buffer

出力バッファの内容を返し、出力バッファリングを終了します。出力バッファリングがアクティブでない場合、FALSEが返されます。

ob_get_contents();を使用します。

ob_start();
include('test.php');
$content = ob_get_contents();
ob_end_clean();
echo("Included{".$content."}");

アップデート:

<?php
ob_start();
?>
<h1>Welcome</h1>
<?php 
include('contentbox1.php'); 
include('contentbox2.php'); 
include('contentbox3.php'); 
?>
<b>Bye</b>
<?php
$content = ob_get_contents();
ob_end_clean();
echo("Included{".$content."}");
?>
于 2013-02-28T23:03:40.443 に答える
0

次のことを試してください。

これをtest.phpの先頭に追加します

<?php include("empty_file.php"); ?>

empty_file.phpの内容:

<?php
echo "";
?>
于 2013-02-28T23:08:15.013 に答える