2017-10-15 278 views
0

PHP的新手,試圖找出相對路徑和絕對路徑如何處理require。PHP需要路徑/相對或絕對

我的結構是這樣的:

的index.php
/inc/db_functions.php
/inc/config.php
/login/login.php

db_functions.php包括配置.PHP使用 require_once 'inc/config.php';

的index.php包括db_functions.php使用require_once 'inc/db_functions.php';

如果用戶未登錄,則瀏覽器重定向到login.php。 最初login.php位於根文件夾中,並使用與index.php相同的require。它工作完美。

現在它在它自己的子文件夾中。 我改放在require_once使用 require_once('../inc/db_connect.php');

代碼的工作,直到它得到的db_connect.php放在require_once行,然後失敗。

我改變了在login.php中再次要求是: require_once(__DIR__.'/../inc/db_connect.php');

再次失敗時,它得到了放在require_once在db_connect.php

我改放在require_once在db_connect是一個絕對路徑。它又失敗了。

有沒有什麼辦法可以解決這個問題,因爲包含文件的包含路徑似乎被調用文件的位置所改變(我認爲這有意義),但是如何使它更加健壯。

+1

請編輯您的問題,以便它包含您的文件的源代碼並編寫您獲得的錯誤消息。但是,魔術常量'__DIR__'應該可以做到。 – Progman

+0

嗨。我會嘗試上傳代碼,但它只有幾行,所以我會先修剪它。我也不會收到錯誤信息。 netbeans下的調試只停留在該行,並且不會繼續。 – Flugan

+0

您可能需要檢查https://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php以查看如何從您的PHP腳本中獲取錯誤消息。 – Progman

回答

0

db_functions.php必須包含config.php使用 require_once'config.php';因爲它們在同一個文件夾中。

一般來說,最好是使用完整路徑。