PHP需要顶级目录中的文件

Luc*_*ney 19 php directory require include

我的根站点上方的目录中包含多个子域,根目录中有一个assets文件夹.例如:

/
/assets/
/forums/
/blog/
Run Code Online (Sandbox Code Playgroud)

我正在尝试在根目录和子目录中的php页面上的require()文件,例如,assets/include/form.php在根目录中的index.php和index.php中都是required()论坛目录.但是,在form.php中,是另一个要求,试图获取include目录中包含的另一个文件.

我似乎无法找到一种方法来在这个form.php中要求一个文件,它可以在根目录的index.php和论坛目录的index.php上工作.

有没有什么办法可以明确要求从根目录开始的文件?

Che*_*ker 50

有几种方法可以实现这一目标.

使用相对路径 form.php

require_once __DIR__ . '/otherfile.php';
Run Code Online (Sandbox Code Playgroud)

如果您使用的是PHP 5.2或更早版本,则可以使用dirname(__FILE__)而不是__DIR__.了解更多关于魔术常量在这里.

使用$_SERVER['DOCUMENT_ROOT']变量

这是文档根目录的绝对路径:/var/www/example.org/C:\wamp\www\在Windows上.

文档根目录是根级别文件所在的文件夹:http://example.org/index.php将在其中$_SERVER['DOCUMENT_ROOT'] . '/index.php'

用法: require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';

使用自动加载器

如果它非常简单,那么对于你的应用程序来说这可能有点过分了.

设置PHP的包含路径

您还可以在使用require()或时设置PHP查找文件的目录include().看看set_include_path() 这里.

用法: require_once 'otherfile.php';


注意:

我看到一些答案建议使用内部的URL require().我不建议这样做,因为PHP文件在被包含之前会被解析.对于输出HTML的HTML文件或PHP脚本,这是可以的,但如果您只有一个类定义,则会得到一个空白结果.

  • @Steve:否。这是您的应用程序所运行的系统提供的变量,因此用户不提供。如果此变量包含“邪恶字符”,则说明您存在配置问题,或者系统已被黑客入侵。这些都不是您的应用程序可以做的任何事情。 (2认同)