我正在为我的网站使用复杂的文件夹结构,这使得我的内容组织变得简单。但是,当我需要链接到页面时,我经常需要采用这种方法:
include_once '../../../assets/php/DB/DBConnect.php';
我有办法摆脱所有../
事吗?
答案 0 :(得分:1)
尝试
方法01
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/assets/php/DB/DBConnect.php";
include_once($path);
方法02
include_once $_SERVER["DOCUMENT_ROOT"].'/assets/php/DB/DBConnect.php';
注意强>
我发现在某些环境
DOCUMENT_ROOT
似乎没有正确设置。我设计了一种独立于服务器的方式,以及托管服务提供商是否也能够设置包含或自动前置路径。每个目录都包含一个名为
'meta'
的{{1}}文件(或任何想要调用它的文件)。对于该目录中的任何文件,它们只是将其包含为'__php__.php'
。文件本身只包括父目录中一直到站点根目录的文件。然后,站点根目录中的文件可以包含其他文件,即使服务提供商不支持自动包含文件的简单方法,也可以定义<?php include('__php__.php'); ?>
之类的变量,然后可以在以后使用。如果文档文件被移动到另一个目录,它们仍然会在该目录中包含'SITE_ROOTDIR'
文件,并且仍会从顶部__php__.php
文件中获取SITE_ROOTDIR
常量。我也为一个简单的导航栏做了类似的事情,其中每个目录都有一个
__php__.php
文件,每个页面只是将它包含在正确的位置,它可以包含父导航元素并定义自己的导航元素。这样做的一个优点是网站的一部分可以在子目录中划分,并且仍然获得该部分的根,即使它不是实际的文档根。 缺点是指在流量较大的网站上执行所有包含时速度可能会变慢。
又一个:
__navbar__.php
答案 1 :(得分:0)
从
改变include_once '../../../assets/php/DB/DBConnect.php';
要
include_once $_SERVER["DOCUMENT_ROOT"].'/assets/php/DB/DBConnect.php';
注意 assets
应该是您的第一个子文件夹。