2016-05-07 6 views
1

私は、WorkerManagerという従業員のタスクを管理するための簡単なアプリケーションを作っています。最初は、私は以下の構造を有していた: PHPファイルをインクルード/要求できません

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を使用すると正しいパスが得られますが、この方法でincludeまたはrequireにしようとすると動作しません。私はこのプロジェクトを消去し、既存のソースを使用して新しいプロジェクトを作成しようとしましたが、まだ動作しません。

私は何ができますか?

次回、ツリー構造を変更する場合、NetBeans外で行う必要がありますか? NetBeansにプロジェクト構造を「スキャン」させ、新しいパスを「学習」させる方法はありますか?

私は、NetBeans 8.1は、Apache 2.4.18は、Ubuntu 16.04

感謝を使用しています。

編集: ちょっとオフトピック...プロジェクトでこのように、私は一つの「モデル」、1「DAO」と各エンティティの1つ以上の「ビュー」のファイルを持っている場合、あなたは何をすべきかの構造好む?プロジェクトツリーの形状に関する「ベストプラクティス」はありますか?

編集2:私はrequire_once './list/ShoppingListController.php';を持っており、それが完璧に動作index.php

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

: 私は、次のような構造を持つ新しいプロジェクトを作りました。しかし、list/edit-list.phpで私はまったく同じ行を持っており、それは動作しません。また、'ShoppingListController.php'だけでなく、$_SERVER['DOCUMENT_ROOT'].'/shoppinglist/list/ShoppingListController.php'も要求/含めるように試みましたが、まだ何もありません。誰が何が起こっているのか教えてもらえますか?

答えて

0

私は最終的に解決策を見つけました!

includeまたはrequireにはすべて、'./'でパスを開始しました。私はそれが自分のサイトのルートだと思ったが、それは現在のフォルダだ。したがって'./list/ShoppingListController.php'index.phpに使用しても問題ありませんでしたが、ShoppingListController.phpと同じフォルダにあるedit-list.phpには使用しないでください。

解決策は、includeまたはrequireの冒頭にdirname(__FILE__)を使用し、残りのパスを連結することでした。

例えば、index.phpに私が持っている:edit-list.phpに私が持っている間...

require_once dirname(__FILE__).'/list/ShoppingListController.php';

を:ShoppingListController.php

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

を、私はいくつかのファイルをインクルードする必要があり、そうI持っている:

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

これで問題は解決しましたが、今はすべて正常に動作します:)

1

Apacheがindex.phpファイルをキャッシュしていて、古いパスを使用している可能性があります。それを確認する必要があります。

Netbeansはファイルを変更する単なるIDEです。 Netbeansがここで問題になる方法はありません。これらのパスを変更するためにメモ帳を使用することもできますが、これはプロジェクトの観点からも同じです。

+0

キャッシュをクリアするにはどうすればよいですか?私は/ var/cache/apache2/mod_cache_diskをチェックしましたが、それは空です。見るべき他の場所はありますか?私は何時間もグーグルで遊んでいましたが、キャッシュをきれいにする方法を見つけることができません... – vtomic85

関連する問題