将 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 加载它们吗?

PHP require_once()

将 CSS 部署与站点的其余部分分开

php require_once 包含相对于文件而不是工作目录的文件

require_once FCPATH.'1.php' 子目录代码这样怎么才能访问根目录1.php