根路径不与PHP的工作包括:(root path doesn't work with php

2019-07-17 12:34发布

/在路段始去根文件夹中的PHP不工作包括。

例如“/example/example.php”

解决办法是什么?

Answer 1:

我的根文件夹,假设你的意思是你的web文档根目录,而不是文件系统的根目录。

为此,您可以

  • 添加Web根文件夹的包含路径 ,并include('example/example.php')
  • 也可以include($_SERVER['DOCUMENT_ROOT'].'/example/example.php')


Answer 2:

我有这个问题了。 保罗·迪克森的答案是正确的,但也许这将帮助你理解为什么:

这里的问题是,PHP是一个服务器端语言。 其中纯HTML文件可以根据你设置服务器的根URL访问文件(即从任何子目录你在你可以使用访问图像/images/example.jpg从顶级目录往下走),PHP实际上访问当您使用服务器的根目录include (/images/example.jpg)

你已经建立了实际上的网站结构在于Apache服务器的文件系统中。 我的网站根看起来像这样,从服务器的根目录开始,下降:

/home2/siteuserftp/public_html/test/

“测试”代表你的网站的根

因此,要回答你的问题,为什么你的PHP包括没有得到你想要的结果(这是工作正是因为它应该)是因为你问的PHP代码,试图在服务器根目录找到你的文件,当它实际上是位于您网站的HTML根这看起来像上面。

您的文件将基于的站点根“测试/”,并会是这个样子:

/home2/siteuserftp/public_html/test/about/index.php

答案保罗·迪克森提供:

include($_SERVER['DOCUMENT_ROOT'].'/example/example.php')

正是将解决你的问题(不用担心试图找到文档根目录替换“DOCUMENT_ROOT”,PHP会为你做它。只要确保你有“DOCUMENT_ROOT”从字面上有)

编辑:

更多信息DOCUMENT_ROOT和其他PHP服务器变量可以在这里找到



Answer 3:

包括()(和许多其他功能,如需要(),fopen()函数等)都工作过的本地文件系统,而不是Web根目录。

所以,当你做这样的事

include( "/example/example.php" );

你试图从你的* nix机器的根包括。

虽然有很多方法来接近你正在做的事情众多,保罗·迪克森的建议可能是你最好的赌注。



Answer 4:

每个Web服务器都拥有public_html文件夹,在其中您通常会保留你的文件等。通过使用/ ,你不会有机会public_html ,而不是你对主(unaccesible)根直接。 因此,使用$_SERVER['DOCUMENT_ROOT']."/your/locati.on"代替



Answer 5:

我解决了这个运行Windows和IIS以下配置的机器上:

<?php
  $docroot = 'http://www.example.com/';
  include ($docroot.'inc-header.php');
?>

如果你是一个本地开发机器上,你可以强迫你的域名指向通过将以下用C为localhost:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \主机

127.0.0.1   www.example.com

此外,您还需要启用allow_url_include在php.ini像这样

allow_url_include = On


Answer 6:

对我来说,下面的技巧的工作。 我使用的是Windows使用IIS,所以DOCROOT是C:\的Inetpub \ wwwroot文件。

  1. 这样做的C SUBST:\的Inetpub \ wwwroot文件的驱动器。 让它为W:(WEB内容)。
    subst W: C:\Inetpub\wwwroot
  1. 编辑php.ini中这样说:追加宽:\到包含路径,改变的doc_root至W:\

include_path = ".;c:\php\active\includes;W:\"
doc_root = W:\

  1. 把subst命令到CMD文件启动文件夹中自动进行映射。

现在,这两个版本允许:


    include '/common/common.inc'; // access to mapped W: root
    include 'common/common.inc'; // access to W: within include_path



Answer 7:

某些版本的PHP可能在文档根目录末尾的分隔符,而其他人可能不会。 作为一个实际问题,你可能要使用:

    $r = trim(filter_input(INPUT_SERVER, 'DOCUMENT_ROOT', FILTER_SANITIZE_STRING));
    if (substr($r, 0, 1) == '/')
    {
      define("PATCH_SEPARATOR", "/");  
    }
    else
    {
      define("PATCH_SEPARATOR", "\\");    
    }

    if (substr($r, -1) == PATCH_SEPARATOR)
    {
      include_once ($r . 'example/example.php');
    }
    else
    {
      include_once ($r . PATCH_SEPARATOR . 'example/example.php');
    }


文章来源: root path doesn't work with php include