Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在包含的文件中包含文件_Php - Fatal编程技术网

Php 在包含的文件中包含文件

Php 在包含的文件中包含文件,php,Php,这是我的目录: global.php includes class_bootstrap.php resourcemanager index.php require_once('./global.php'); 要在index.php文件中包含global.php,我有: require_once('../global.php'); 在global.php中,我有: require_once(./includes/class_bootstrap.php); 运行index.p

这是我的目录:

global.php
includes
    class_bootstrap.php
resourcemanager
    index.php
require_once('./global.php');
要在index.php文件中包含global.php,我有:

require_once('../global.php');
在global.php中,我有:

require_once(./includes/class_bootstrap.php);
运行index.php时,我收到以下消息:

警告:require_once(./includes/class_bootstrap.php):无法打开流:第15行的C:\xampp\htdocs\yurivn\global.php中没有此类文件或目录

致命错误:require_once():在第15行的C:\xampp\htdocs\yurivn\global.php中打开required./includes/class_bootstrap.php'(include_path=';C:\xampp\php\PEAR')失败

我想知道PHP是否在错误的目录中搜索了class_bootstrap.PHP文件,它可能会搜索“resourcemanager/includes/class_bootstrap.PHP”,而不是“includes/class_bootstrap.PHP”,因为如果我将index.PHP放在与global.PHP相同的目录中,它会工作得很好


是否仍然可以使index.php在resourcemanager目录中工作而不更改global.phpclass_bootstrap.php中的任何内容?我只是写了一些插件,我不想改变任何属于开发者的东西。

如果你像这样写完整的路径,它就可以工作了

include('D:/wamp/www/ajax/a.php');

index.php
中,尝试使用
dirname(\uuu文件)
。因此,它应该是:

require_once dirname(__FILE__) . 'global.php';
require_once dirname(__FILE__) . '/../global.php';

编辑

由于
index.php
global.php
低1级,因此您必须添加
/../
,因此它应该是:

require_once dirname(__FILE__) . 'global.php';
require_once dirname(__FILE__) . '/../global.php';
试试这个

require_once('../includes/class_bootstrap.php');

最简单的方法是在索引或配置中设置ROOT_DIR,然后使用它来解析所有其他包含路径。

您真正想做的是(让将来的生活更轻松)使用一个定义文件

只要在代码运行之前定义了它,那么一切都会很好-最简单的方法是创建一个
definitions.php
文件,然后将它包含在您使用的每个页面的顶部

define("URL", "http://yoursite.com/"); //note the trailing / to make life easier.
那么在你的包上就用吧

require_once(URL . 'file.php');
这样,在本地计算机上传输到新主机时,只需将定义或URL更改为

define("URL", "http://siteontheinternet.com/"); 
你可以走了

您可以尝试以下操作:

<?php

require_once __DIR__ . '/../global.php';

我找到解决办法了!在包含以下内容之前,只需添加以下内容:

chdir('./../');
并包含global.php,就像它们是同一个目录一样:

global.php
includes
    class_bootstrap.php
resourcemanager
    index.php
require_once('./global.php');

非常感谢你试图帮助我,我真的很感激

这是完整的错误消息吗?我记得在“没有这样的文件或目录”之后使用了完整的路径。对不起,我刚刚编辑了我的问题。请尝试使用
dirname(\uuuuu file\uuuu)
或选中:相对包含与包含它们的文件不相关:它们与包含路径相关,并且(如果include_路径包含
的条目,那么相对于当前的工作目录,还有其他方法吗?当我将其上载到我的在线主机或更改我的域时,这会很烦人。@Mee-是的,我使用define发布的方法将让您完全做到这一点-重构代码并高兴:-D“在不更改global.php或class_bootstrap.php中的任何内容的情况下,是否仍然可以使index.php在resourcemanager目录中工作?我只是在编写一些插件,我不想更改属于开发人员的任何内容。”我在问题D中提到了这一点:请告诉我这是否不可能,它会返回此消息“警告:需要\u一次”(C:\xampp\htdocs\yurivn\resourcemanager/global.php):打开流失败:在第4行的C:\xampp\htdocs\yurivn\resourcemanager\manga.php中没有这样的文件或目录致命错误:require\u once():无法打开所需的“C:\xampp\htdocs\yurivn\resourcemanager/global.php”(包括路径=”;C:\xampp\php\PEAR')在第4行的C:\xampp\htdocs\yurivn\resourcemanager\manga.php中.global.php位于/htdocs/yurivn/,而不是htdocs/yurivn/resourcemanageradd
/../../../code>,因此:
require\u once dirname(\uu FILE\uu)。'/../global.php'
警告:require\u once(./includes/class\u bootstrap.php):无法打开流:在第14行的C:\xampp\htdocs\yurivn\global.php中没有这样的文件或目录(这里是)致命错误:require_once():无法打开required'./includes/class_bootstrap.php'(include_path=';C:\xampp\php\PEAR')在第14行的C:\xampp\htdocs\yurivn\global.php中,与global.php相同的目录下有许多其他文件需要它,因此我不能在global.php中更改任何内容。我在问题中提到了它。OP声明他不想更改
global.php
class\u bootstrap.php