我有一个PHP文件。我想阅读该文件中编写的PHP代码。我正在执行的脚本位于'test.php'文件中。
<?php
$test = file_get_contents('test.php');
echo '<pre>'.$test.'</pre>';
?>
浏览器窗口中的输出是:
'.$test.'
'; ?>
对文件的另一个测试:
<!DOCTYPE html>
<html>
<head>
<title>Canvas Home</title>
<link rel="shortcut icon" href="http://localhost/collaborate/icons/collaborate.ico">
<?php
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheets/".basename(__FILE__,'.php').".css\">";
echo "<script type=\"text/javascript\" src=\"js/".basename(__FILE__,'.php').".js\"></script>";
?>
<link rel="stylesheet" type="text/css" href="stylesheets/navs.css">
</head>
<body>
<div></div>
</body>
</html>
给出了输出:
"; echo ""; ?>
有人能解释一下第一个文件中发生了什么吗?我希望返回的字符串能够被简单地回显。
同样在第二个文件中,第一个简单的HTML部分被回显,因此被解释为HTML,被理解。但那会发生什么呢?为什么显示echo命令?
我基本上想要实现读取任何脚本文件的源而不是执行它,我希望它显示在浏览器窗口中。
答案 0 :(得分:4)
由于您正在将原始PHP代码输出到浏览器,因此浏览器正在尝试将<?php
呈现为HTML标记。您可能希望通过htmlspecial chars运行代码,因此PHP代码中的任何HTML元字符都会被编码,然后不会被浏览器呈现。 e.g。
$code = file_get_contents('script.php');
echo '<pre>', htmlspecialchars($code), '</pre>';
请注意,您的浏览器会向您询问有关输出的信息,尤其是在您使用PHP和/或HTML时。请记住,浏览器的工作是 RENDER html,以及任何看起来像HTML的东西,包括PHP标签。如果你在浏览器中看到令人难以置信的输出,总是做一个“查看源代码”来查看页面的原始“代码” - 你可能会看到你的PHP和HTML代码,通过就好了。
答案 1 :(得分:0)
您的浏览器正在尝试将该文件解释为HTML代码,正如Mark B所指出的那样。一个干净的解决方案是让浏览器将响应主体解释为纯文本,如下所示:
<?php
header('Content-Type: text/plain');
echo file_get_contents(__FILE__);
exit;
注意:在PHP __FILE__
中始终引用当前文件。