我已经包含多个文件,我最近开始了一个新目录,但无法让我的一些包含工作。
例如我在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
工作欢迎任何建议。
答案 0 :(得分:6)
防止可能破坏相对路径的CWD更改的最佳方法是使用绝对路径包含文件。
实现此目的的一种简单方法是使用__DIR__
常量。
示例:
文件结构:
serverRoot (/)
|-usr
|-local
|-www
|-index.php
|-bootstrap.php
|-includes
|-a.php
|-overall
|-b.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');
答案 1 :(得分:1)
我是通过在每个页面的开头创建一个变量来实现的。该变量只是顶级目录的路径。
...示例
而不是
include 'includes/head.php';
使用:
$pathToRoot = '../';
include $pathToRoot.'includes/head.php';
但您必须在每个页面的顶部创建此变量并更改所有include和require语句。
答案 2 :(得分:1)
您可以查看这部分PHP文档: http://www.php.net/manual/en/function.include.php
根据给定的文件路径包含文件,如果没有给出,则为 指定 include_path 。如果在。中找不到该文件 include_path,include将最终签入调用脚本自己的 目录和失败前的当前工作目录。
我建议你:
php.ini
),这样您就不会有任何问题!另外,当你说:
例如我在我的postpage.php中有这个包含位于 example.com/c/postpage.php:
请务必完全理解“路径”URL(example.com/foo)和磁盘上的路径文件可能完全不同,并完全取消链接。
所以,在你的情况下,因为你似乎有一个目录用于布局东西(页眉/页脚/ ...),也许还有一个用于模板的目录,最简单的方法是在你的php.ini中添加这两个路径
然后只需致电:include('head.php')
即可。
您也可以在include_path中添加项目的基本目录,然后调用include('includes/overall/head.php')
答案 3 :(得分:0)
include "include/header.php";
include "include/head.php";
如果你是从另一个文件夹中选择文件,那么编码将是这样的
include "foldername/filename.php";