PHP文件无法识别包含

时间:2014-12-13 07:27:58

标签: php include directory require

所以,我有一个(大概)容易解决的问题,目前胜过我。

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

和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";

我的问题是classes / registration.php不包括config / db.php或classes / website_language.php,即使我在MAIN文件中包含那些文件BEFORE 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文件中。

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

我认为你的问题是你没有考虑到&#34;包含/要求&#34;是相对于执行包含的文件。

让我们举个例子

文件夹结构

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

问题

index.php

include "folder1/file1.php";

file1.php

include "file2.php";

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

<强>解

index.php

include "folder1/file1.php";

file1.php

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

因此解决方案是使用绝对路径 - 您可以使用dirname( FILE )混合亲戚和绝对路径,以获取包含该文件的目录。