2012-07-03 69 views
4

时抛出的错误我试图创建一个引导文件,但每当我尝试包括或要求它在另一个文件中这样的错误不断显示出来:PHP:包括和需要的文件

警告: require_once( ../folder/file.php)一次function.require]:未能打开流:在...

致命错误没有这样的文件或目录: require_once()[function.require]:失败需要打开'../folder/file.php'(include_path ='.:')...

要p aint整个场景: 我有一个引导文件,load.php。在它中,我连接到配置文件../config/config.php。在加载文件上方,我在classes/database.php中有一个数据库类文件。在数据库文件我写这个if语句:

  if (file_exists('../load.php')) { 
       echo 'load.php: It exists'; 
       require_once('../load.php'); 
      } else { 
        echo 'load.php: It does not exist'; 
        } 

在加载文件我写过类似的if语句,但是如果检查的配置文件是否存在。出人意料的是,当我加载database.php中的文件获得:

load.php: It exists 
config.php: file doesn't exist 

但是当我加载load.php文件,我得到:

config.php: It exists 

这里是我的文件位于:

根目录: /库/ Web服务器/文件/项目

config.php文件 /库郭宝宏/ Web服务器/文件/项目/配置/ config.php文件

load.php文件: /Library/WebServer/Documents/project/includes/load.php

database.php中的文件:/Library/WebServer/Documents/project/includes/classes/database.php

我需要这个bug的帮助。 谢谢,

+2

我很难过。你可以发布你的完整代码,并采取你的文件结构的截图或ascii艺术?这会让每个人都变得更容易。 –

+0

您正在使用文件的相对路径。你能解释一下这些文件的结构吗?这将有助于解释这个错误。 – cstrat

+0

仔细检查你的路径。另外,这来自'config.php:文件不存在'? –

回答

8

使用dirname(__FILE__) . '../relative/path/from/file/in/which/opened/to/config.php'。从PHP 5.3起,还有__DIR__常量

+0

谢谢。在使用'dirname(__ DIR __)'修改后,我开始工作。 这为什么有效?使用这些命令简单地上下目录有什么问题:'../''../../'或'folder/file.php' – Rashad

+1

因为当你将某个文件包含到另一个文件时(例如,有三个:index.php,config/config.php和app/bootstrap.php)符号点指的是另一个目录。例如 ** index.php:** 'require'app/bootsrap.php';' ** app/bootstrap.php ** '/ *对文件的错误引用,因为'..'是指dirname index.php文件*/require'../ config/config.php';' ** config/config.php ** '/ *什么也不做* /' 您可以使用'getcwd() '来证明这种行为。 – Serjio

+0

谢谢。我可以使用'getcwd()'来代替使用'dirname(__ FILE __)'或'dirname(__ DIR __)'。例如: 'require_once(getcwd。“/”。“file.php”)' – Rashad