我的根站点上方的目录中包含多个子域,根目录中有一个assets文件夹。例如:
/
/assets/
/forums/
/blog/
我正在尝试在根目录和子目录中的php页面上的require()文件,例如,assets / include / form.php在根目录中的index.php和index.php中都是required()论坛目录。但是,在form.php中,是另一个要求,试图获取include目录中包含的另一个文件。
我似乎找不到一种方法来在这个form.php中要求一个文件,它可以在根目录的index.php和论坛目录的index.php上工作。
有没有什么办法可以明确要求从根目录开始的文件?
有几种方法可以实现这一目标。
form.php
的相对路径require_once __DIR__ . '/otherfile.php';
如果您使用的是PHP 5.2或更早版本,则可以使用dirname(__FILE__)
而不是__DIR__
。阅读更多关于魔法常数here的信息。
$_SERVER['DOCUMENT_ROOT']
变量这是文档根目录的绝对路径:Windows上的/var/www/example.org/
或C:\wamp\www\
。
文档根目录是根级别文件所在的文件夹:http://example.org/index.php将位于$_SERVER['DOCUMENT_ROOT'] . '/index.php'
中
用法:require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';
如果它非常简单,那么对于你的应用程序来说这可能有点过分了。
您还可以设置PHP在使用require()
或include()
时查找文件的目录。查看set_include_path()
here。
用法:require_once 'otherfile.php';
注意:
我看到一些答案建议在require()
中使用URL。我不建议这样做,因为PHP文件在被包含之前会被解析。对于输出HTML的HTML文件或PHP脚本,这是可以的,但如果您只有一个类定义,则会得到一个空白结果。
如果更高一级使用:
include('../header.php');
如果两个级别更高:
include('../../header.php');
更重要的是,访问:http://forums.htmlhelp.com/index.php?showtopic=2922
function rURI($p){
for($w='',$i=1;$i<(count(explode('/',$_SERVER['PHP_SELF']))-1);$i++,$w.='../');return
$w.$p; }
需要rURI('dirA / inc / Xpto.php'); //来自root的路径你有2个解决方案。您可以使用文件的完整URL,例如,如果您的文件位于可以使用的'lib'目录中:require_once('http://www.example.com/lib/myfile.php')
要么
您可以在PHP中尝试$_SERVER['DOCUMENT_ROOT']
函数,但这并不总是万无一失。
你为什么不用(../)
require('../folder/file.php');