3

私は次の特異性に出くわしました:

$handle = fopen(realpath("../folder/files.php"), "r");

ファイルを読み取ることはできませんが、ファイルから php タグを削除するとすぐに読み取り可能になり、スクリプトは空でないファイル コンテンツをページに出力します。また、file.php が実行されることはないので、なぜ問題なのか疑問に思います。

どういうわけか、Apache または PHP では、php タグ PHP を含むファイルを単なるテキストとして読み取ることができないと思います。

特定のファイルに対して有効にするにはどうすればよいですか (もちろん、グローバルに行うのは安全ではありません)。

PHP 5.2.x および Apache 2.0 の使用

4

6 に答える 6

11

わかった。Google chrome を使用してページをデバッグしていましたが、ソースを表示すると、Chrome が何らかの理由で PHP タグを非表示にしていることに気付きました。Firefox で同じテストを実行したところ、ソースを表示するとすべて問題ないことがわかりました。

テストの詳細は次のとおりです。

コード:

$fh = fopen("test.php","r");
while ($line = fgets($fh)){
echo $line;
}

読み込むファイル (test.php):

testing <?php testing2 ?> testing3

レンダリング (Chrome と Firefox の両方):

testing  testing3

ソースを表示 (Firefox を使用):

testing <?php testing2 ?> testing3

ソースを表示 (Chrome を使用 - 私の間違いのソース):

testing  testing3
于 2009-03-17T15:47:55.027 に答える
7

出力を正しく解釈していますか? ファイルの内容をページ出力に直接出力すると、ブラウザーは山かっこ内のテキストをタグと見なして表示しません。としてコンテンツを提供するtext/plainか、ブラウザの「ソースの表示」コマンドを使用して、ブラウザが表示することを選択したものだけでなく、実際にそこにあるものを見ていることを確認してください。

于 2009-03-17T15:44:00.467 に答える
0

私は使っているhtmlspecialchars($line);

それは問題を解決しました。

于 2015-04-29T08:49:09.983 に答える