我需要能够使用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是内联替换所以应该没有范围问题?我错过了什么好的印刷品? 约翰
答案 0 :(得分:0)
当php处理器执行page.php
时,它对apache include一无所知 - 这看起来就像对它的HTML注释。所以它只是执行它看到的PHP代码,然后将其余部分写为html,产生如下内容:
<body>
<!--#include virtual="file.php" -->
</body>
在下一步中,apache会看到#include
并尝试执行file.php
。但在那个阶段,$text
变量早已消失。由于file.php
作为独立文件执行,因此当您尝试访问$text
变量时,显然会产生错误。