将 require_once() 与站点根目录之外的文件一起使用
Posted
技术标签:
【中文标题】将 require_once() 与站点根目录之外的文件一起使用【英文标题】:using require_once() with files outside of the site root 【发布时间】:2012-04-18 14:50:04 【问题描述】:我有一个应用程序,它被分成几个具有公共文件的站点。结构是这样的……
|
|--[Site A] <--Web site A points here
| |-- (Files and folders)
|
|--[Site B] <--Web site B points here
| |-- (Files and folders)
|
|--[Includes] <--common files are here
如果我在站点 A 或 B 并执行以下操作:
require_once(include.php)
一切正常,但如果我这样做:
require_once(../Includes/include.php)
我收到一个错误。
我通过做一些工作来解析路径来解决这个问题,例如
$path = explode( "\\" , __DIR__ );
for ($i = 1; $i <= 2; $i++) array_pop( $path );
$path = implode( "\\" , $path ) . "\\includes\\initialize.php" ;
虽然这可行,但我正在寻找使用 require_once() 的更优雅的解决方案
谢谢。
【问题讨论】:
require_once(../Includes/include.php)
-- 缺少的引号是错字还是真实代码的样子?
这在***.com/questions/2370053/…之前已经问过了
【参考方案1】:
您确定包含“require_once”的脚本在 [Site A] 中而不是它的子文件夹中吗?我问是因为路径是相对于包含脚本的。例如,如果您在站点 A 中有一个包含“/subfolder/config.php”的 Index.php 文件,并且您希望 config.php 包含站点 A 之外的内容,则必须使用
require_once(../../Includes/include.php)
【讨论】:
以上是关于将 require_once() 与站点根目录之外的文件一起使用的主要内容,如果未能解决你的问题,请参考以下文章
php require_once 没有按我想要的方式工作.. 相对路径问题
安全地将私有 PHP 文件存储在公共目录之上并使用 require_once 加载它们吗?