包括,路径,我可以走出这个

时间:2013-05-29 01:41:14

标签: php path include

许多用户建议我创建了一个文件globals.php,其中我:

<?php
    define('ROOT_DIR', __DIR__);
?>

然后我将此文件包含在网站的每个文件中。

但是现在当我将这个文件包含在其他文件中时会出现问题。

E.g。网站结构:

/en/index.php
/header.php
/globals.php

现在,当我在header.php

上加载index.php
<?php
//header.php
include 'globals.php';

//index.php
include '../globals.php';
include '../header.php';
?>

现在header.php找不到globals.php',因为它搜索'../globals.php'

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

让我们假设您的globals.php文件位于文档的配置目录中

所以你有

/index.php
/config/globals.php 

一个好的方法可能是通过require_once($_SERVER["DOCUMENT_ROOT"]."/config/globals.php);包含globals.php,无论你在哪个目录中,这都会有效。

根据我个人的喜好,我喜欢为项目的根目录设置一个常量并从中拉出所有项目相关数据,例如

if (!defined("APP_ROOT")) define("APP_ROOT", $_SERVER["DOCUMENT_ROOT"]);

您可能希望将此选项作为选项进行评估,而不是 DIR

我发现它更自然......

如果我需要包含文件,我会导航到查看http://www.mysite.com/library/database.php,然后我只是include(APP_ROOT."/library/database.php");;

另一个可能适合你的好东西是包含一个

SetEnv APP_CONFIG_FILE "/path/to/config/file.php"
你的.htaccess文件中的

指令然后在你的所有脚本中

include($_SERVER["APP_CONFIG_FILE"]);

答案 1 :(得分:0)

根据你的问题,我理解“header.php”与“globals.php”位于同一目录中,因此你可以为“header.php”执行类似的操作

<?php
//header.php
include 'globals.php'
?>

这应该做的工作,如果它仍然无效,请评论它。

感谢。