我偶然发现了以下的世俗性:
$ handle = fopen(realpath(“../ folder / files.php”),“r”);
无法读取文件,但只要从文件中删除php标签, 它变得可读,我的脚本在页面上打印非空文件内容。 此外,file.php永远不会执行,所以我想知道为什么这是问题。
我想某种程度上Apache或PHP不会让包含php标签的文件只读取PHP文本。
如何为我的特定文件启用它(当然在全球范围内执行它会不安全)?
使用PHP 5.2.x和Apache 2.0
答案 0 :(得分: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
答案 1 :(得分:7)
您确定要正确解释输出吗?如果将文件内容直接打印到页面输出,浏览器将不会在尖括号内显示文本,因为它认为它是标记。将您的内容投放为text/plain
,或使用浏览器的“查看源”命令确保您查看的内容,而不仅仅是浏览器选择显示的内容。
答案 2 :(得分:0)
Hmm file_get_contents()对我有用。这只是fopen的问题吗?
编辑:你到底得到了什么错误?
答案 3 :(得分:0)
Wadih M.解决了这个问题。 PHP标签在浏览器中隐藏了整个标记包含的php源输出,但View Source显示了它们。谢谢!
答案 4 :(得分:0)
我正在使用htmlspecialchars($line);
它解决了这个问题。
答案 5 :(得分:-1)
重命名该文件 阅读 获取您的数据 改变它们 重新命名您的文件:)