2012-07-03 46 views
4

時拋出的錯誤我試圖創建一個引導文件,但每當我嘗試包括或要求它在另一個文件中這樣的錯誤不斷顯示出來:PHP:包括和需要的文件

警告: require_once( ../folder/file.php)一次function.require]:未能打開流:在...

致命錯誤沒有這樣的文件或目錄: require_once()[function.require]:失敗需要打開'../folder/file.php'(include_path ='.:')...

要p aint整個場景: 我有一個引導文件,load.php。在它中,我連接到配置文件../config/config.php。在加載文件上方,我在classes/database.php中有一個數據庫類文件。在數據庫文件我寫這個if語句:

  if (file_exists('../load.php')) { 
       echo 'load.php: It exists'; 
       require_once('../load.php'); 
      } else { 
        echo 'load.php: It does not exist'; 
        } 

在加載文件我寫過類似的if語句,但是如果檢查的配置文件是否存在。出人意料的是,當我加載database.php中的文件獲得:

load.php: It exists 
config.php: file doesn't exist 

但是當我加載load.php文件,我得到:

config.php: It exists 

這裏是我的文件位於:

根目錄: /庫/ Web服務器/文件/項目

config.php文件 /庫郭寶宏/ Web服務器/文件/項目/配置/ config.php文件

load.php文件: /Library/WebServer/Documents/project/includes/load.php

database.php中的文件:/Library/WebServer/Documents/project/includes/classes/database.php

我需要這個bug的幫助。 謝謝,

+2

我很難過。你可以發佈你的完整代碼,並採取你的文件結構的截圖或ascii藝術?這會讓每個人都變得更容易。 –

+0

您正在使用文件的相對路徑。你能解釋一下這些文件的結構嗎?這將有助於解釋這個錯誤。 – cstrat

+0

仔細檢查你的路徑。另外,這來自'config.php:文件不存在'? –

回答

8

使用dirname(__FILE__) . '../relative/path/from/file/in/which/opened/to/config.php'。從PHP 5.3起,還有__DIR__常量

+0

謝謝。在使用'dirname(__ DIR __)'修改後,我開始工作。 這爲什麼有效?使用這些命令簡單地上下目錄有什麼問題:'../''../../'或'folder/file.php' – Rashad

+1

因爲當你將某個文件包含到另一個文件時(例如,有三個:index.php,config/config.php和app/bootstrap.php)符號點指的是另一個目錄。例如 ** index.php:** 'require'app/bootsrap.php';' ** app/bootstrap.php ** '/ *對文件的錯誤引用,因爲'..'是指dirname index.php文件*/require'../ config/config.php';' ** config/config.php ** '/ *什麼也不做* /' 您可以使用'getcwd() '來證明這種行爲。 – Serjio

+0

謝謝。我可以使用'getcwd()'來代替使用'dirname(__ FILE __)'或'dirname(__ DIR __)'。例如: 'require_once(getcwd。「/」。「file.php」)' – Rashad