0

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

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

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

但是现在当我将此文件包含在其他文件中时,问题就来了。

例如网站结构:

/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'.

我怎么解决这个问题?

4

2 回答 2

1

让我们想象一下,您的 globals.php 文件位于文档目录中的 config 目录中

所以你有了

/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"]);

于 2013-05-29T02:14:51.483 回答
0

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

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

这应该可以完成工作,如果仍然无法正常工作,请将其注释掉。

谢谢。

于 2013-05-29T01:55:10.730 回答