我已经包含多个文件,我最近开始了一个新目录,我无法让我的一些包含工作.
例如,我在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');
标签:php,include,directory
来源: https://codeday.me/bug/20190725/1534545.html