2015-11-03 104 views
0

我有一个文件navbar.php文件夹视图/一般。它包括一些相对路径文件../controllers/file1.php等..相对路径和嵌套包括

我只能在同一个视图/常规文件夹中的其他文件中包含navbar.php文件。如果我尝试将其包含在文件之外,例如views/signup,那么navbar.php(../controllers/file1.php等)中包含的include路径将不再相关。

我该如何解决这个问题,所以navbar.php可以从任何地方使用?

回答

3

我有一个类似的挑战,并创建了一个定义了所有,我希望能够调用的,所需要的相关路径常量的单个文件。我将这个文件包含在我的所有页面中(我定义了$ urlRoot,这样它就可以在所有环境中工作,并且可以移动到不同的域等):

文件:pathData.php(为您的示例添加MENUDIR):

$baseDir = dirname(__DIR__) . '/'; 
$rootUrl = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/'; 
define('ROOTURL', $rootUrl); 
define('BASEDIR', $baseDir); 
define('INCLUDES', $baseDir . 'includes/'); 
define('INCLUDESURL', ROOTURL . 'includes/'); 
define('JQUERYURL', ROOTURL . 'includes/jquery/'); 
define('MENUDIR', ROOTURL . 'views/general/'); 

然后在每个文件中,我将该文件包含在包含相对目录路径的包含文件中。例如:

include("pathData.php"); 
or 
include("../pathData.php"); 
or 
include("../../pathData.php); 
etc. 

所以你的情况,你可以(取决于你的pathData文件):

include("../pathData.php"); 
include(MENUDIR . "navbar.php"); 
etc... 
+1

它在Windows以及Linux。 :-) –

+0

@RyanVincent - 幸运的是 - 我对Windows很不熟悉。哈! – Xmy

+2

这是一个非常典型的方法,用于许多复杂的应用程序,并且将是一个很好的开始。 –

0

如果你使用PHP 5.3+

include __DIR__ . '/relative/path/from/this/file.php'; 

__DIR__是一个神奇的恒定保持当前文件的绝对路径。

如果您正在使用较早版本的PHP的:

include dirname(__FILE__) . '/relative/path/from/this/file.php'; 
0

您也可以概括一切从您的网站通过使用$_SERVER['DOCUMENT_ROOT']变量主办的根目录,这将是目录,您应该index.php被定位。

使用方法如下:

include($_SERVER['DOCUMENT_ROOT'] . 'path/from/root/website/location/to/file.php');