0

我已经设法自学了 PHP/PDO/SQL,但是,我终其一生都无法弄清楚相对路径在 PHP 和 HTML 中是如何工作的。我有一个带有几个目录和分支的多页网站,我希望能够创建一个简单的模板,可以用来制作新页面,而不必每次都更改指向我的样式表和 PHP 的链接,具体取决于目录。

这是我的布局如下:

 MySite (http://localhost/MySite/)
   RESOURCES //Not a folder, just here for readability
   > serverside > initialize.php
   > templates  > header.php
                  footer.php
                  navuser.php
                  navmenu.php
   > styles     > styles.css
   > images     > variousImages.png

   PAGES //Not a folder, just here for readability

   > index.php
     login.php
     register.php
     gettingstarted.php

  > you         > settings    > settings.php
                > youraccount.php
                > yourfavourites.php

以下是游戏规则: 每个页面首先包含serverside/initialize.php文件(PHP 包含)。然后,每个页面都通过标准的 HTML href 属性包含样式/styles.css 。然后,每个页面都通过 PHP 包含templates/header.phptemplates/footer.php,前者还包含templates/navuser.phptemplates/navmenu.php

问题是,如果其中一个页面位于不同的级别(例如 you/settings/settings.php),那么所有这些包含和 href 都必须更改,这似乎会影响包含中的包含。不可能!

我想要的只是能够在不使用真正的绝对路径的情况下指定文件名,因此如果需要,我可以在整个网站中复制一个模板文件 - 我已经研究过__DIR__, __FILE__, $_SERVER['DOCUMENT_ROOT'], 将变量 $dir 转换为文档root,但没有成功。我也不明白发生了什么。

任何人都可以阐明我的情况吗?我本质上是在寻找有关相对根/链接/文件如何在 PHP 中工作的完整解释。如何处理更复杂的目录结构?再次,我该怎么办?谢谢。

4

1 回答 1

2

您通常会在index.php文件中设置一个包含绝对路径和绝对 URL 的常量,然后在包含等中从那里引用它们。

一个示例index.php

<?php
define('ROOT_DIR', __DIR__);

之后您可以使用该常量:

require ROOT_DIR . '/includes/database.php';
require ROOT_DIR . '/application/controllers/MyController.php';
require ROOT_DIR . '/application/models/MyModel.php';

等等。希望这可以帮助。

于 2013-02-19T10:58:00.453 回答