0

我需要能够使用 Apache SSI 包含 PHP 文件,而不是 PHP 包含指令。

在 page.php 我有:

<body>
<?php
$text = "This is text";
?>
<!--#include virtual="file.php" -->
</body>

在 file.php 我有:

<p>This is a test</p>
<?php
echo "<p>".$text."</p>";
?>

显示第一行文本,但随后出现错误“file.php 第 3 行中的未定义变量”。

我认为 SSI 是一个内联替换,所以应该没有范围问题?我错过了什么精美的印刷品?约翰

4

1 回答 1

0

page.php由 php 处理器执行时,它对 apache 包含一无所知——它看起来就像一个 HTML 注释。所以它只是执行它看到的 php 代码,然后将其余部分写为 html,产生如下内容:

<body>
<!--#include virtual="file.php" -->
</body>

在下一步 apache 中,将看到#include并尝试执行file.php. 但在那个阶段,$text变量早已消失。由于file.php作为独立文件执行,因此当您尝试访问$text变量时显然会产生错误。

于 2013-06-24T23:12:14.840 回答