无法包含/要求PHP文件

时间:2016-05-07 08:13:11

标签: php netbeans path include

我正在制作一个简单的应用程序来管理员工'任务,称为WorkerManager。起初,我有以下结构:

workermanager
|-index.php
|
|-user
|   |-dao
|   |  |-UserDAO.php
|   |-model
|   |-view
|-task
|   |-dao
|   |-model
|   |-view
|-department
|   |-dao
|   |-model
|   |-view
...

因此,UserDAO.php位于workermanager/user/dao/,我使用require_once './user/dao/UserDAO.php'将其包含在内。

后来,我决定改变项目的结构,并做了类似的事情:

workermanager
|-index.php
|
|-dao
|   |-user
|   |   |-UserDAO.php
|   |-task
|   |-department
|-model
|   |-user
|   |-task
|   |-department
|-view
|   |-user
|   |-task
|   |-department
...

我是通过创建文件夹,拖动和放大来完成的。在NetBeans项目窗格中删除。从那以后,我无法包含UserDAO.php(或任何其他更改位置的文件)。函数file_exists('./dao/user/UserDAO.php')返回false。当我使用echo $_SERVER['DOCUMENT_ROOT'].'/workermanager/dao/user/UserDAO.php'文件位置时,它会提供正确的路径,但当我尝试以这种方式includerequire时,它无法正常工作。我试图删除这个项目并使用现有资源创建一个新项目,但它仍然无法正常工作。

任何想法我该怎么办?

下次当我决定更改树结构时,我应该在NetBeans之外进行吗?是否有任何方法可以使NetBeans"扫描"项目结构和学习"新途径?

我使用NetBeans 8.1,Apache 2.4.18,Ubuntu 16.04

感谢。

修改: 稍微偏离主题......在这样的项目中,如果我有一个"模型",一个" DAO"和一个或多个" view"每个实体的文件,您更喜欢哪种结构?是否有任何"最佳做法"关于项目树的形状?

编辑2 : 我刚刚制作了一个具有以下结构的新项目:

shoppinglist
|-index.php
|...
|-list
|   |-ShoppingList.php
|   |-ShoppingListController.php
|   |-create-new-list.php
|   |-edit-list.php
|...
...

index.phprequire_once './list/ShoppingListController.php';,它完美无缺。但是在list/edit-list.php我有完全相同的一行,但它不起作用。我还尝试过要求/仅包含'ShoppingListController.php'以及$_SERVER['DOCUMENT_ROOT'].'/shoppinglist/list/ShoppingListController.php',但仍然没有。谁能告诉我发生了什么?

2 个答案:

答案 0 :(得分:1)

Apache可能会缓存您的index.php文件,但仍然使用旧路径。你应该检查一下。

Netbeans只是一个可以更改文件的IDE。 Netbeans没有办法在这里出问题,您也可以使用记事本来更改这些路径,从项目角度来看也是如此。

答案 1 :(得分:0)

我终于找到了解决方案!

在每个includerequire中,我已使用'./'启动了路径。我认为这是我网站的根目录,但它是当前的文件夹。因此,可以在'./list/ShoppingListController.php'中使用index.php,但不应在edit-list.php中使用ShoppingListController.php,该dirname(__FILE__)include位于同一文件夹中。< / p>

解决方案是在每个requireindex.php的开头使用require_once dirname(__FILE__).'/list/ShoppingListController.php';,然后连接路径的其余部分。

例如,在edit-list.php我有:

require dirname(__FILE__).'/ShoppingListController.php';

......在ShoppingListController.php我有:

require_once dirname(__FILE__).'/../db/DBConnection.php'; require_once dirname(__FILE__).'/ShoppingList.php'; require_once dirname(__FILE__).'/../article/Article.php';

<some_string>:<some_string>我需要包含多个文件,所以我有:

A110:B120

这解决了我的问题,现在一切都很完美:)