我已经包含多个文件,我最近开始了一个新目录,我无法让我的一些包含工作.
例如,我在postpage.php中包含了这个,它位于example.com/c/postpage.php:
include '../includes/overall/header.php';
它的工作原理是它进入根目录并包含header.php但我的问题是header.php还包括未包含的文件.
header.php中的代码是:
include 'includes/head.php';
这是行不通的
如果我将header.php更改为:
include '../includes/head.php';
然后它打破了我网站的其余部分,同时只为postpage.php工作
欢迎任何建议.
防止可能破坏相对路径的CWD更改的最佳方法是使用绝对路径包含文件.
一个简单的方法是使用__DIR__
常量.
例:
文件结构:
serverRoot (/) |-usr |-local |-www |-index.php |-bootstrap.php |-includes |-a.php |-overall |-b.php |-c.php
让我们说:
index.php包括bootstrap.php和a.php
a.php包括b.php
bootstrap.php包含c.php
的index.php
$basedir = realpath(__DIR__); include($basedir . '/bootstrap.php'); include($basedir . '/includes/a.php');
a.php只会
global $basedir; include($basedir . '/includes/overall/b.php');
bootstrap.php中
global $basedir; include($basedir . '/includes/overall/c.php');