包含文件中的PHP变量未定义

时间:2013-06-24 22:50:28

标签: php ssi

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

在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是内联替换所以应该没有范围问题?我错过了什么好的印刷品? 约翰

1 个答案:

答案 0 :(得分:0)

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

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

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