2014-12-13 21 views
0

文件我有兩個文件夾在我的項目文件夾是這樣的:如何解決在不久的文件夾

-my project folder 
     -folder1 
       file1.php 
     -folder2 
       file2.php 

file1.php我想導入file2.php所以我寫這篇文章:

include_once '../folder2/file2.php'; 

但它告訴我一個錯誤:

include_once(../folder2/file2.php): failed to open stream: No such file or directory

什麼是解決方案?

答:

include_once(__DIR__ . ".\..\folder2\file2.php"); 

我想這是什麼原因呢?

+0

調用腳本(index.php)通常決定當前的工作目錄,所有包含調用必須是相對的。 – mario 2014-12-13 14:42:41

+0

你調用'file1.php'還是文件'file1.php'也被包含到另一個文件中? – Rizier123 2014-12-13 14:42:42

+0

在項目文件夾的根目錄中的一個文件我包括'file1.php'和'file1.php'我嘗試包括'file2.php',我遇到了錯誤 – Ehsan 2014-12-13 14:45:58

回答

1

試試這個:

include_once(dirname(__FILE__) . "../folder2/file2.php"); 

或(從PHP 5.3):

include_once(__DIR__ . "../folder2/file2.php"); 

PHP的include機制從 「當前目錄」 的觀點,而不是 「當前文件的目錄」 搜索文件。通常,「當前目錄」是主文件(例如index.php)目錄。您可以通過調用chdir()或某些相關功能來更改它。 dirname(__FILE__)(或__DIR__)表示「當前文件的目錄」。

的其他可能的解決方案是,當您定義的根文件夾,包括一切相對於此:

在index.php文件:

define('ROOT_DIR', __DIR__); 

無處不在:

include(ROOT_DIR . "somedir/somefile.php"); 

你也可以使用$_SERVER["DOCUMENT_ROOT"],但我不建議這樣做。

在較大的項目中,建議使用OOP進行編程。使用面向對象的代碼,您可以使用autoloading

+0

它適用於:'include_once(__ DIR__。「。\ .. \ folder2 \ file2.php」);'我不這是理由嗎? – Ehsan 2014-12-13 14:59:09

+0

無論系統如何,建議使用'/'(斜線)(或在某些情況下使用'DIRECTORY_SEPARATOR'常量)而不是'\\'(反斜槓)。 – 2014-12-13 15:03:23

相關問題