2014-10-09 48 views
0

我一直在閱讀整個早上和測試,但我仍然試圖圍繞這一點,因爲移動webroot以外的項目。毋庸置疑,事情仍然存在。PHP目錄結構和訪問

一切位於VAR/

我的情景/問題:兩者的index.php文件需要slide.php(位於VAR /庫/ INC)以來,該指數的一個網頁是另一個層次了。我一直在使用以下內容:

var/www/html/index.php - require_once('../../ libs/inc/slide.php');

var/www/html/acc/index.php - require_once('../../../ libs/inc/slide.php');

但是,slide.php也會利用connection.php,它是slide.php的兩個級別,然後返回到另一個名爲「connect」的目錄。我一直在使用下面的工作爲上述index.php文件之一。

var/libs/inc/slide.php - require_once('../../ connect/connection.php');

VAR /連接/ connection.php

的問題是html目錄中的「ACC」子目錄及其頁面可以訪問slide.php鑑於上述,但不能得到connection.php

我該如何做到這一點? 當前結構:

var/www/html/index.php - require_once('../../ libs/inc/slide.php');

var/www/html/acc/index.php - require_once('../../../ libs/inc/slide.php');

var/libs/inc/slide.php - require_once('../../ connect/connection.php');

var/connect/connection.php

+1

通常你要麼只使用完整路徑'的/ var/libs'每個包括包括文件,這樣的路徑並不重要,或者你想補充'使用的/ var/libs'到include路徑[通過set_include_path] (http://www.php.net/set_include_path),它可以讓你指定'inc/slide.php' ...等。 – 2014-10-09 17:08:43

+0

另一個常見的做法是在配置文件的某個地方創建一個常量,這個文件隨處可見地包含lib'define('LIB_PATH','/ var/libs /')路徑,然後包括使用include(LIB_PATH)。 'INC/slide.php')'。這很好,因爲如果路徑改變了,你只需要改變常量。 – 2014-10-09 17:15:38

+0

謝謝喬納森。我會嘗試你的第二個建議。這聽起來更令人愉快。我會讓你知道它是怎麼回事。 – 2014-10-09 17:18:35

回答

0

有三種常見的做法。

  1. 您只需指定絕對路徑/var/libs/與每個包含,因此它指向的文件,無論你在哪裏包括。例如:/var/libs/inc/slide.php
  2. 您可以將lib路徑添加到php包含使用set_include_path時將查找文件的位置列表。這將允許您只指定inc/slide.php以包含文件。
  3. 您使用絕對路徑,但使用像define('LIB_PATH', 'var/libs/')這樣的常數定義第一部分。把它放在一個隨處可用的配置文件中,然後當你使用這個配置文件時,就可以使用它:include(LIB_PATH.'inc/slide.php')

數字1可能是最快的,但有點髒。如果你只是原型設計,並且需要快速完成測試,那很好。 2號作品,但我個人不喜歡它(我個人不喜歡在運行時更改配置變量,但那就是我)。 3號是大多數圖書館中最常見的。全局範圍中定義的常量在所有範圍內都可用,因此它們可以在函數和類中使用,而不必像變量一樣調用global

+0

Jonathan,所以我選擇了數字3.我將它包含在某些需要的文件中,但是現在我得到了「注意:常量LIB已經在/ var/pathToConfigFile中定義了它,但它很奇怪,因爲我沒有弄明白。根索引頁面,但是當發送到子索引時,我收到這個通知。任何想法? – 2014-10-09 19:07:32

+0

您可能會將配置文件包含在多個腳本中,就像A.php包含配置並且還包含B.php你也可以將include改成'include_once()'並且配置腳本只會在第一次調用時被包含,或者在定義變量之前檢查變量是否被定義了,快速短手被定義('LIB' )|| define('LIB','value');'。定義部分只會在定義爲false的情況下運行 – 2014-10-09 19:12:22

+0

haha​​haahaha。是的,我找到了,我是,呃,我把它們都設置爲include_once – 2014-10-09 19:16:03