您好我有以下目录结构:
主文件夹 - >课程 - > user_classes
全部互相嵌套。我在 Classes目录
中有以下文件always_include_top.php
custom_error_handler.php
config.php
database.php
其中database.php文件如下:
<?php
include_once("always_include_top.php");
include_once("config.php");
include_once("custom_error_handler.php");
include_once ("user_classes/newDatabase.php");
class Database extends newDatabase
{
// some more code... with extra functions
public function dbBackUp($backupfile = NULL)
{
//code...
}
}
?>
我在User user_classes目录
中有以下文件newDatabase.php
此文件的代码示例为
<?php
include_once("../always_include_top.php");
include_once("../config.php");
include_once("../custom_error_handler.php");
error_reporting(E_ALL);
class newDatabase
{
// my code goes here
}
?>
为什么我在 classes / database.php 中出现以下错误( classes / user_classes / newDatabase.php 中没有错误)
警告:include_once(../ always_include_top.php) [function.include-once]:无法打开流:没有这样的文件或 目录 E:\ wamp \ www \ greeting_cards \ adm \ classes \ user_classes \ database.php on 第2行
警告:include_once()[function.include]:打开失败 '../always_include_top.php'包含在内 (include_path ='。; C:\ php \ pear')in E:\ wamp \ www \ greeting_cards \ adm \ classes \ user_classes \ database.php on 第2行
警告:include_once(../ config.php)[function.include-once]:失败 打开流:没有这样的文件或目录 E:\ wamp \ www \ greeting_cards \ adm \ classes \ user_classes \ database.php on 第4行
警告:include_once()[function.include]:打开失败 '../config.php'包含(include_path ='。; C:\ php \ pear')in E:\ wamp \ www \ greeting_cards \ adm \ classes \ user_classes \ database.php on 第4行
警告:include_once(../ custom_error_handler.php) [function.include-once]:无法打开流:没有这样的文件或 目录 E:\ wamp \ www \ greeting_cards \ adm \ classes \ user_classes \ database.php on 第5行
警告:include_once()[function.include]:打开失败 '../custom_error_handler.php'包含在内 (include_path ='。; C:\ php \ pear')in E:\ wamp \ www \ greeting_cards \ adm \ classes \ user_classes \ database.php on 第5行
致命错误:无法重新声明类数据库 第12行的E:\ wamp \ www \ greeting_cards \ adm \ classes \ database.php
我希望两个文件都能单独编译。因为我会根据页面类型将文件包含在其他文件中。包括在这里的问题是什么?
答案 0 :(得分:1)
使用include_once()
时,它不会更改为特定文件所在的目录并在其中执行,它会在当前文件的上下文中执行该文件的内容。因此,classes / user_classes / database.php就像在classes文件夹中一样执行。 “..”指的是那种情况下的Main文件夹,所以它正在寻找Main文件夹中的前三个文件。这些文件不在Main文件夹中,因此它会为您提供警告。