我的根网站上方有多个子域名,根目录下有一个assets文件夹。例如:
/
/assets/
/forums/
/blog/
我正在尝试在根目录和子目录中的php页面上要求()文件,例如,assets / include / form.php在根目录和索引中的index.php中都是required()论坛目录中的.php。但是,在form.php中,是另一个要求,试图获取include目录中包含的另一个文件。
我似乎无法找到一种方法来在这个form.php中要求一个文件,它可以在根目录的index.php和论坛目录的index.php上工作。
有没有办法可以明确要求从根目录开始的文件?
答案 0 :(得分:46)
有几种方法可以实现这一目标。
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';
如果你的应用程序非常简单,这可能会有点过分。
当您使用require()
或include()
时,您还可以设置PHP查找文件的目录。查看set_include_path()
here。
用法:require_once 'otherfile.php';
注意:强>
我看到一些答案建议使用require()
内的网址。我不建议这样做,因为PHP文件在被包含之前会被解析。这对于输出HTML的HTML文件或PHP脚本是可以的,但是如果你只有一个类定义,你会得到一个空白的结果。
答案 1 :(得分:0)
你有2个解决方案。您可以使用文件的完整URL,例如,如果您的文件位于可以使用的“lib”目录中: require_once('http://www.example.com/lib/myfile.php')
或
你可以在PHP中尝试$_SERVER['DOCUMENT_ROOT']
函数,但这并不总是万无一失。
答案 2 :(得分:0)
所以......你可以在pgm1.php&中使用它。 pgm1.php,和REQUIRE或
INCLUDE有效!
function rURI($p){
for($w='',$i=1;$i<(count(explode('/',$_SERVER['PHP_SELF']))-1);$i++,$w.='../');return
$w.$p; }
需要rURI('dirA / inc / Xpto.php'); //从根路径
答案 3 :(得分:0)
如果更高一级使用:
include('../header.php');
如果两个级别更高:
include('../../header.php');
更多信息,请访问:http://forums.htmlhelp.com/index.php?showtopic=2922
答案 4 :(得分:0)
也许这不是正确的主题,也许不是正确的用法,但也许会帮助某个人。当我想从绝对路径在菜单中建立链接时,当我从目录跳转到目录并且路径不停变化时,我想修复到基本目录。
因此,我没有使用'../'进入子文件夹(因为我不知道我需要下降../../../),而是将链接写为<a href='/first_dir/second_dir/third_dir//..'>
,与<img src='/first_dir/second_dir//../logo.svg'>
相似。
不幸的是,这不适用于require_once()
。
PHP 7
答案 5 :(得分:-3)
为什么不使用(../)
require('../folder/file.php');