2013-06-12 42 views
0

我有一個麻煩與PHP包括。我有以下文件結構PHP'包括'的問題 - 似乎無法讓包含正常工作

的htdocs

  • 的index.php
  • 的login.php

php_includes

  • db_conx.php
  • check_user_status.php

在db_conx.php文件中,我創建了一個變量$ number = 10;供測試用。

的db_conx文件包含在與下面的代碼check_user_status.php文件:

include_once("db_conx.php"); 

和工作正常 - 即我可以回聲$數量並獲得10

然而,我「M包括login.php中的頂部check_user_status.php文件與此代碼:

include_once("php_includes/db_conx.php"); 

,並在此頁我無法呼應了$號此頁面上(check_user_status.php )。

我將需要包含在許多頁面中的腳本(因爲它檢查用戶是否登錄)。我在做什麼奇怪的路徑嗎?

回答

2

對於相對路徑,您需要執行此操作。

include_once("../php_includes/db_conx.php"); 

要打破這一點。

你當前的工作目錄最初將是htdocs /如果你在瀏覽器中點擊該文件。

那麼你想跟着下來php_includes去db_conx.php的..回上一層目錄級別(同時包含htdocs目錄和php_includes這樣的目錄)。

當您在子目錄中執行文件時,這會成爲問題。假設你和一個page2。php to a htdocs/subpages/

現在,如果我們遵循這些相同的步驟,我們不會到達相同的位置。

更好的方法是獲取相對於絕對位置的路徑。我喜歡使用的文檔根目錄(你的情況htdocs中),所以:

include($_SERVER["DOCUMENT_ROOT"]."/../php_includes/db_conx.php"); 

將引用文件系統上的同一個地方,無論它是用來在何處。

+0

這個答案提供了更好的細節。 –

+0

嗨orangepill - 這將工作,如果php_includes位於htdocs內?在這種情況下,我想我不需要「..」吧? – Mobaz

+0

這是正確的。 – Orangepill

0

我認爲你可以使用魔法__DIR__不斷

文件的目錄。如果在include中使用,則返回包含文件的目錄。這相當於dirname(FILE)。除非目錄名是根目錄,否則該目錄名沒有結尾斜槓。 (添加於PHP 5.3.0。)

這將幫助您使用嵌套包含的文件,事實上文件路徑將自動總是設置,你不必應付absolute paths

+0

你可以給我一個樣品包括與_DIR_我的結構? – Mobaz

+0

@Mobaz有點像'include __DIR__。 '/php_includes/db_conx.php';' – Fabio

0

如果你的文件結構是正確的,假設php_includes不是htdocs目錄內的目錄,你需要做的:

include_once("../php_includes/db_conx.php"); 
相關問題