包含和相对路径有问题

Having trouble with includes and relative paths

我正在构建一个非常小的页面,该页面将在 5 天的会议期间有效。该站点每天都需要加载新内容,因此我使用一个小脚本加载一个包含文件。我试图让我的包含成为相对路径,但有些东西不正常。下面是我正在使用的当前代码,它使用一个数组(24 是今天的日期,所以我可以检查 ti 是否在工作)映射到文件的日期和默认的内容片段应该条件不是 return 结果。

        <?php

        $path = $_SERVER['HTTP_HOST'];

        $date = date("j");
        $event_dates = array(24,15,16,17,18,19);

        if (in_array($date, $event_dates)) {
            $path .= "/_includes/date-".$date.".php";
            include($path);
        }
        else {
            $path .= "/_includes/default.php";
            include($path);
        }

    ?>

如果我包含“_includes/default.php”,一切正常,这可能只是现在需要的解决方案,但我想找出相对路径问题,以防万一运行 稍后讨论同一问题。另外,如果我将 include 更改为 echo,那么我会得到我期望的结果。

由于您使用的是 .=,因此 "/_includes/..." 字符串连接到 $path。然后它将具有 localhost/_includes/... 形式的内容。这不包含方案 (HTTP(S)),因此仅当您在该目录中确实有一个文件夹 localhost 时才有效。

如果你想要当前目录,你可以使用 dirname(__FILE__)。如果 _includes 是当前目录的子目录等,您也可以使用 ./_includes/... 作为路径