2014-12-13 152 views
0

所以,我有一个(可能)简单的问题来解决这个问题,目前我正在胜利。PHP文件无法识别包括

我的布局与主体注册文件开始,在主目录:

registration.php的

<?php 

// Include connection to database 
require "config/db.php"; 

// Include website language class 
require "classes/website_language.php"; 

// Include registration class 
require "classes/registration.php"; 

// Include the page 
include "views/registration.php"; 

我的问题是类/ registration.php的IS NOT包括配置/ DB .php或classes/website_language.php,尽管我在MAIN文件中包含了classes/registration.php之前的那些文件。由于config/db.php和classes/website_language.php被包含在classes/registration.php之前的主注册文件中,因此classes/registration.php不应该能够从这两个包含的文件中提取数据吗?

我通过在classes/registration.php文件中包含了config/db.php和classes/website_language.php来解决这个问题,但是如果可能的话,我希望这些包含在MAIN文件中。

+0

检查,registration.php有任何错误。 – saru 2014-12-13 07:55:10

+0

请记住标记正确答案(并提供反馈意见),以帮助其他(或将会)出现相同问题的人员 – 2014-12-13 14:11:30

回答

0

试试这个:

require("config/db.php"); 
require("classes/website_language.php"); 
require("views/registration.php"); 
0

我认为你的问题是,你没有考虑到“包括/需要”是相对于文件执行,包括。

让我们做出了榜样

文件夹结构

root/index.php 
root/folder1/file1.php 
root/folder1/file2.php 

的问题

index.php 

include "folder1/file1.php"; 

file1.php 

include "file2.php"; 

“包含 ”file2.php“;”将由index.php执行,因此index.php将在同一个文件夹(本例中为root)中搜索名为file2.php的文件。当然index.php不会找到这样的文件。

SOLUTION

index.php 

include "folder1/file1.php"; 

file1.php 

include dirname(__FILE__) . "/file2.php"; 

因此,解决办法是使用绝对路径的工作 - 你可以混合使用目录名(FILE),获取包含该文件的目录亲戚和绝对路径。