使用 require_once 的路径错误
Posted
技术标签:
【中文标题】使用 require_once 的路径错误【英文标题】:Wrong path using require_once 【发布时间】:2015-06-08 19:56:44 【问题描述】:我在尝试使用 require_once 时遇到问题。 我指定了错误的路径,我找不到解决方案。
我有一个名为 header.php 的文件,其中包含两个使用 require_once 的文件:functions.php 和 navigation.php。 这部分工作正常。 当我尝试在位于不同目录的名为 view.php 的文件中包含 header.php 时出现问题。
这是树枝:
C:\wamp\www\1.1\plugins\docreader\php\view.php
C:\wamp\www\1.1\theme\dark-blue\templates\files\header.inc.php
C:\wamp\www\1.1\theme\dark-blue\templates\files\functions.inc.php
C:\wamp\www\1.1\theme\dark-blue\templates\files\navigation.inc.php
我尝试了很多不同的路径,但都没有成功。
请问有人知道吗?
【问题讨论】:
你只需要一点MAGIC
很高兴我的 php 日子结束了 xD
【参考方案1】:
了解(并使用)魔术常量__DIR__
和函数dirname()
以从包含器的路径开始生成包含文件的路径。
例如,如果您想在 plugins\docreader\php\view.php
中包含 theme\dark-blue\templates\files\functions.inc.php
,则使用如下内容:
// Use this in 'plugins\docreader\php\view.php'
include dirname(dirname(dirname(__DIR__))).
'/theme/dark-blue/templates/files/functions.inc.php';
__DIR__
是一个magic constant,计算结果为包含使用它的文件的目录。在C:\wamp\www\1.1\plugins\docreader\php\view.php
中,__DIR__
的值为'C:\wamp\www\1.1\plugins\docreader\php'
。
函数dirname()
返回所提供路径的父目录。有点像..
,只会更好。使用它三次会将作为参数传递的值(上面解释的__DIR__
的值)减少到'C:\wamp\www\1.1'
。从那里开始一切都很简单:将相对路径添加到所需文件 ('/theme/dark-blue/templates/files/functions.inc.php'
) 并忘记包含问题。
【讨论】:
感谢您回答的提示。我尝试了你的建议,但它不起作用。我认为问题出在 header.php 本身包含另外两个文件这一事实。 header.php 是我试图包含在 view.php 中的那个。我试图在 view.php 中包含另外两个,但问题仍然存在。 注意:使用未定义的常量 SITE_TEMPLATES_PATH - 在第 3 行的 C:\wamp\www\1.1\theme\dark-blue\templates\files\header.inc.php 中假定为“SITE_TEMPLATES_PATH”警告: require_once(SITE_TEMPLATES_PATH/files/functions.inc.php):无法打开流:C:\wamp\www\1.1\theme\dark-blue\templates\files\header.inc.php 中没有这样的文件或目录3 致命错误:require_once():在 C:\wamp\www\1.1\theme\dark- 中打开所需的 'SITE_TEMPLATES_PATH/files/functions.inc.php' (include_path='.;C:\php\pear') 失败blue\templates\files\header.inc.php 在第 3 行 第 3 行是:require_once(SITE_TEMPLATES_PATH .'/files/functions.inc.php'); 我只是给你一个例子。我不知道您需要包含哪个文件以及在哪里。只需在你所有的include
/require
中使用这个想法(在包含的文件中),它就会起作用。
是的,我让我的大脑工作了一点,这就是我所做的。非常感谢【参考方案2】:
你需要让你的文件路径是绝对的而不是相对的。实现此目的的一个有用的超级全局变量是$_SERVER['DOCUMENT_ROOT']
,它将评估您的 Web 服务器文件根目录。
【讨论】:
以上是关于使用 require_once 的路径错误的主要内容,如果未能解决你的问题,请参考以下文章
PHP require_once 在 Mac OSX Lion 中本地抛出错误