未在public_html中执行的框架的PHP代码


php code of frames not executed in public_html

我在public_html目录中有一个php站点main.php,它提供了几个帧:

<html>
<head>
<title>My Site</title>
</head>
<frameset rows="55, *, 0" frameborder="no">
    <frame id='headerFrame' src="headerFrame.php" scrolling="no">
    <frame src="mainPages/a.php">
    <frame src="mainPages/b.php">
</frameset>
</html>

服务器正确执行了main.php中的php代码标记(未显示),但是当我在浏览器中查看框架源时,我在html中看到未解释的php标记:

headerFrame.php:

<?php
include 'base.php';
?>
<html>
...

为什么main.php被解释,而headerFrame.php没有?当我将页面移动到/var/www/mypage/时,这一切都很好。

环境:Ubuntu 12.10, apache2

我自己发现了这个错误,这在发布的代码片段中并不完全明显:

在php脚本中有许多包含相对路径。/var/www/mypage~/public_html/mypageinclude的相对路径处理不同。

前者考虑相对于运行脚本文件位置的相对路径,而后者处理相对于主目录(~/public_html/mypage)的相对路径。

在后一种情况下,没有找到包含的php文件,php标记被转储而不是由apache服务器解释。

我使用Ubuntu 12.10的默认apache2配置,只是我启用了userdir。