如何正确显示(不执行)php文件?

时间:2011-09-09 18:34:13

标签: php

我有以下代码:

<? 
$serverurl = $_SERVER["DOCUMENT_ROOT"];
$file = $serverurl.'/demo/sample_php.php';
$newfile = $serverurl.'/demo/sample_php.txt';
if (!copy($file, $newfile)) {
    echo "failed to copy $file...\n";
}
$homepage = file_get_contents($serverurl.'/demo/sample_php.txt');
?>

<pre class="code">
    <code class="php boc-html-script">
        <? echo htmlentities($homepage, ENT_QUOTES); ?>
        </code>
</pre>
<? unlink($newfile); ?>

这基本上将* .php文件复制到* .txt文件,显示内容,然后删除它。但是,我不想创建可见文件,因为应用程序旨在显示文件列表,然后显示文件的内容。文件以.txt扩展名出现会令人困惑。

我意识到我可以创建一个隐藏的文件夹,并在那里进行所有转换,但我认为必须有一种更有效的方式来显示php文件的内容。

我做了一些tmpfile()的实验,但是我无法获取要写入的php文件的内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

没有理由进行文件复制。 file_get_contents()以字符串形式返回文件的内容,这就是您所需要的。它不会像include()/require()那样解析和执行PHP代码。

只需将PHP文件的内容检索到$homepage变量中,然后像使用临时文本文件一样将其回显。

<?php
// get the PHP file directly.
$homepage = file_get_contents($serverurl.'/demo/sample_php.php');
?>
<pre class="code">
    <code class="php boc-html-script">
        <?php echo htmlentities($homepage, ENT_QUOTES); ?>
    </code>
</pre>

在评论中建议使用突出显示进行打印后,您可以使用highlight_file()更轻松地执行此操作:

highlight_file($serverurl.'/demo/sample_php.php');