require_once dirname(__FILE__) ...的目的是啥?
Posted
技术标签:
【中文标题】require_once dirname(__FILE__) ...的目的是啥?【英文标题】:what is the purpose of require_once dirname(__FILE__) ...?require_once dirname(__FILE__) ...的目的是什么? 【发布时间】:2014-02-04 13:33:29 【问题描述】:我正在使用具有以下代码的 php 库:require_once dirname(__FILE__) . '/config.php';
根据我的阅读,dirname(__FILE__)
指向当前目录。
那么写require_once 'config.php';
不是更容易吗?
我在这里唯一的猜测是包含dirname(__FILE__)
确保require_once
函数使用绝对路径而不是相对路径。
【问题讨论】:
这就是原因 - 它确保了绝对路径。其他脚本可以使用chdir()
更改工作目录,这可能会混淆包含路径。同样,如果从 HTTP 以外的东西(例如 CLI 或 cron)调用,则包含路径可能不同,或者工作目录可能不同。
可以改用__DIR__
...
显然__DIR__
可从 php 5.3 及更高版本获得。来源:1、2
【参考方案1】:
是的,你是对的 - dirname(__FILE__)
确保 require_once 函数使用绝对路径而不是相对路径。
__FILE__
常量代表正在运行的脚本。它将返回运行脚本的完整路径和文件名。
例如,如果一个名为database.init.php
的脚本包含在文件系统的任何位置,它想要包含位于同一目录中的脚本database.class.php
,您可以使用:
require_once dirname(__FILE__) . '/database.class.php';
【讨论】:
【参考方案2】:一个例子:
如果您的文件包含在某处,则默认情况下它将从包含您的文件的路径开始搜索。在这种情况下,require 不适用于您文件旁边的文件
【讨论】:
以上是关于require_once dirname(__FILE__) ...的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章