PHP包含在include中

时间:2012-05-03 13:20:29

标签: php filesystems include directory

我有三个php文件。 “upper”文件是一个网页(我们称之为Sample.php)。在页面顶部,它执行此操作:

<body>
<?php include("../Top.php"); ?>
//Webpage content
</body>

Top.php文件是存储菜单和横幅的文件,以便于更改。 Top.php文件有一行:

<?php include("ConnectToDB.php"); ?>

ConnectToDB.php是一个带有一些PHP代码的文件,用于连接数据库。

这里,文件系统的排序如下:

  • RootFolder     
          
    • ConnectToDB.php
    •     
    • Top.php
    •     
    • OtherSample.php
    •     
    • 文章         
                
      • Sample.php
      •         
          
    •     

当我访问Sample.php时,我在include("ConnectToDB.php");语句中的include("../Top.php");中收到错误。但如果我的文件OtherSample带有include("Top.php");语句,我将不会收到任何错误,并且Top.php和ConnectToDB.php都能正常工作。有什么问题?

4 个答案:

答案 0 :(得分:5)

您可以使用:

include_once($_SERVER['DOCUMENT_ROOT'].'/RootFolder/whatever.php');

要包含文件,这样你总是有一个包含的绝对路径,它不依赖于它的调用位置。

答案 1 :(得分:3)

“include”语句实际上将代码移植到您的页面中。所以请记住,include("ConnectToDB.php")是从Sample.php执行的,因此路径错误。

正确的代码行是:include("../RootFolder/ConnectToDB.php")

其中..表示"localhost/"之后的整个目录结构或您正在使用的任何内容。

答案 2 :(得分:1)

路径错误,通过调用Sample.php,所有路径都属于Sample.php所在的基地。 PHP在错误的文件夹中搜索ConnectToDB ... 试试../ConnectToDB.php,从Sample.php文件开始,这个文件是我上面的一个文件夹......

更好的解决方案,使用绝对路径!

答案 3 :(得分:0)

我遇到了同样的问题。不幸的是,参孙的答案无法为我解决问题。 你可以尝试这个。这对我来说可以。 添加文件存在检查然后在Top.php中添加正确的路径 像这样

<?php
if (file_exists("ConnectToDB.php")) {
    include_once("ConnectToDB.php");
}elseif(file_exists("../ConnectToDB.php")){
    include_once("../ConnectToDB.php");
}
?>

然后你可以访问正确的路径。