PHP需要顶级目录中的文件

时间:2011-10-02 23:51:12

标签: php include directory require

我的根网站上方有多个子域名,根目录下有一个assets文件夹。例如:

/
/assets/
/forums/
/blog/

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

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

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

6 个答案:

答案 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';

使用自动装带器

如果你的应用程序非常简单,这可能会有点过分。

设置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 www.domain.com/dir1/dir2/dir3/pgm1.php,包括或要求 'DIRA / INC / Xpto.php'。
  • 和www.domain.com/dirZ1/dirZ2/pgm2.php中的另一个pgm2.php, 其中包括或要求相同的'dirA / inc / Xpto.php'。
  • 并且您的主机配置未授权require / include 'http://www.domain.com/ ......'
  • 所以......你可以在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');