【发布时间】:2009-06-11 20:46:47
【问题描述】:
我的情况:我有一个类要在很多地方使用,所以我把它放在目录树的高处:
/www/libs/classA/classA.php
它使用位于同一目录中的配置文件 config.ini 并在构造函数中本地引用它。但是,当我从不同目录中的脚本中包含它时,它会尝试从调用脚本所在的目录加载配置文件。有什么方法可以查看包含文件所在的目录吗?理想情况下,我可以将脚本移动到不同的目录而不对其进行任何更改。
【问题讨论】:
我的情况:我有一个类要在很多地方使用,所以我把它放在目录树的高处:
/www/libs/classA/classA.php
它使用位于同一目录中的配置文件 config.ini 并在构造函数中本地引用它。但是,当我从不同目录中的脚本中包含它时,它会尝试从调用脚本所在的目录加载配置文件。有什么方法可以查看包含文件所在的目录吗?理想情况下,我可以将脚本移动到不同的目录而不对其进行任何更改。
【问题讨论】:
在包含/加载文件时应该使用绝对路径。您可以使用__FILE__ constant 和dirname function 检索该绝对路径:
dirname(__FILE__).'/config.ini'
这将为您提供当前执行的脚本文件所在目录中config.ini 文件的绝对路径。因此,当该代码在您的classA.php 脚本文件中执行时,您将获得/www/libs/classA/config.ini。
【讨论】:
如果参数中没有路径信息,您应该能够包含/需要当前文件目录中的文件,例如包括('file2.php');。但我认为即使你有'./file2.php'),它也会相对于第一个包含/执行的脚本的目录。
我喜欢 dirname(____FILE____)... 方法,但我相信在某些文件集总是要部署在同一目录中的情况下,直接包含文件可以提高凝聚力。
【讨论】: