Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法包含/需要PHP文件_Php_Netbeans_Path_Include - Fatal编程技术网

无法包含/需要PHP文件

无法包含/需要PHP文件,php,netbeans,path,include,Php,Netbeans,Path,Include,我正在制作一个简单的应用程序来管理员工的任务,称为WorkerManager。起初,我有以下结构: workermanager |-index.php | |-user | |-dao | | |-UserDAO.php | |-model | |-view |-task | |-dao | |-model | |-view |-department | |-dao | |-model | |-view ... shoppinglist |-index

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

workermanager
|-index.php
|
|-user
|   |-dao
|   |  |-UserDAO.php
|   |-model
|   |-view
|-task
|   |-dao
|   |-model
|   |-view
|-department
|   |-dao
|   |-model
|   |-view
...
shoppinglist
|-index.php
|...
|-list
|   |-ShoppingList.php
|   |-ShoppingListController.php
|   |-create-new-list.php
|   |-edit-list.php
|...
...
因此,UserDAO.php位于
workermanager/user/dao/
中,我使用
require\u 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
(或任何其他更改位置的文件)。函数
文件\u存在('./dao/user/UserDAO.php')
返回false。当我
使用
$\u SERVER['DOCUMENT\u ROOT']./workermanager/dao/user/UserDAO.php'
回显文件位置时,它给出了正确的路径,但当我尝试
包含
要求
这样做时,它不起作用。我曾试图删除这个项目,并与现有的来源,使一个新的一个,但它仍然没有工作

你知道我能做什么吗

下次当我决定更改树结构时,我应该在NetBeans之外进行吗?有没有办法让NetBeans“扫描”项目结构并“学习”新路径

我使用的是NetBeans 8.1、Apache 2.4.18、Ubuntu 16.04

谢谢

编辑: 有点离题。。。在这样的项目中,如果每个实体都有一个“模型”、一个“DAO”和一个或多个“视图”文件,您喜欢什么结构?关于项目树形状是否有任何“最佳实践”

编辑2: 我刚做了一个新项目,结构如下:

workermanager
|-index.php
|
|-user
|   |-dao
|   |  |-UserDAO.php
|   |-model
|   |-view
|-task
|   |-dao
|   |-model
|   |-view
|-department
|   |-dao
|   |-model
|   |-view
...
shoppinglist
|-index.php
|...
|-list
|   |-ShoppingList.php
|   |-ShoppingListController.php
|   |-create-new-list.php
|   |-edit-list.php
|...
...

index.php
中,我有
require_once'/list/ShoppingListController.php'并且它工作得非常好。但是在
list/edit list.php中,我有完全相同的行,它不工作。我还试图只要求/包括
'ShoppingListController.php'
,以及
$\u服务器['DOCUMENT\u ROOT']./shoppinglist/list/ShoppingListController.php'
,但仍然一无所获。有人能告诉我发生了什么吗?

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


Netbeans只是一个更改文件的IDE。Netbeans在这里不可能是问题,您也可以使用记事本来更改这些路径,从项目的角度来看也是一样的。

我终于找到了解决方案

在每个
include
require
中,我都以
'./'
开始了路径。我以为它是我网站的根目录,但它是当前文件夹。因此,在
index.php
中使用
'./list/ShoppingListController.php'
是可以的,但不应该在
编辑list.php
中使用它,它与
ShoppingListController.php
位于同一文件夹中

解决方案是在每个
include
require
的开头使用
dirname(\uuuu文件)
,然后连接路径的其余部分

例如,在
index.php
中,我有:

require_once dirname(__文件)'/list/ShoppingListController.php'

…在
edit list.php中时,我有:

require dirname(_文件__)。'/ShoppingListController.php'

ShoppingListController.php
中,我需要包含几个文件,因此我有:

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

这解决了我的问题,现在一切正常:)

如何清除缓存?我检查了/var/cache/apache2/mod_cache_disk,它是空的。还有别的地方可以看吗?我已经在谷歌上搜索了几个小时,但我找不到如何清理缓存。。。