首页 > 解决方案 > 我应该如何在多个目录中正确包含同一个文件?

问题描述

我目前正在开发一个具有基本目录结构的非常简单的多页 PHP 网站。很像这样:

/
- index.php
- config.php
- services/
  - index.php
  - service-a.php
  - service-b.php
- projects/
  - index.php
  - project-name/
    - index.php
    - testimonials.php
- common/
  - head.php
- js/
- img/
- css/

不幸的是,由于添加了一个额外的本地文件夹,我的本地开发环境和生产环境在结构上不匹配。因此,我创建了config.php- 我将其放置在我认为是根文件夹的位置 - 包含以下内容:

define('ROOT_DIR', __DIR__);
define('ROOT_URL', ($_SERVER["SERVER_NAME"] == "localhost") ? "http://localhost/website/" : "https://website.com/");

这些常量允许我在我的本地和远程环境中为我包含的任何文件创建绝对路径,无论它是另一个 PHP 文件还是图像或样式表。这很好,因为我想尽可能避免任何相对路径。

这是问题所在:我需要在每个页面中包含配置文件才能使常量起作用。对于主页 ( /index.php),这没什么大不了的。我只是将其添加到文件的顶部:

<?php include_once('config.php'); ?>

但是,对于子目录 ( /services/index.php) 中的页面,我必须使用配置文件的相对路径,这是我想避免的:

<?php include_once('../config.php'); ?>

如果我们更深入,比如/projects/project-name/index.php,我必须像这样包含它:

<?php include_once('../../config.php'); ?>

它有效,但似乎/感觉不正确。我应该如何声明包含文件的路径,该文件定义了如何声明包含文件的路径?

搜索了几个小时后,我仍然没有找到答案。如果有人有答案或可以指出我正确的方向,请告诉我。

标签: phpincluderelative-pathinclude-pathabsolute-path

解决方案


推荐阅读