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

查看源代码(使用火狐):

testing <?php testing2 ?> testing3

查看源代码(使用 Chrome - 我的错误来源):

testing  testing3
于 2009-03-17T15:47:55.027 回答
7

你确定你正确地解释了输出吗?如果您将文件内容直接打印到页面输出,浏览器将不会在尖括号内显示文本,因为它认为这是一个标签。将您的内容提供为text/plain,或使用浏览器的“查看源代码”命令来确保您看到的是真正存在的内容,而不仅仅是浏览器选择显示的内容。

于 2009-03-17T15:44:00.467 回答
0

嗯 file_get_contents() 正在为我工​​作。只有fopen才有问题吗?

编辑:你到底得到了什么错误?

于 2009-03-17T15:31:39.607 回答
0

Wadih M. 解决了这个问题。PHP 标签在浏览器中隐藏了整个标签封闭的 php 源输出,但 View Source 显示了它们。谢谢!

于 2009-03-17T15:51:12.743 回答
0

我在用htmlspecialchars($line);

它解决了这个问题。

于 2015-04-29T08:49:09.983 回答
-1

重命名文件读取它获取您的数据更改它们重命名您的文件:)

于 2009-03-17T15:51:23.570 回答