根path不能使用php include

/在一个链接开始到根文件夹不能在PHP包括。

例如“/example/example.php”

解决办法是什么?

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

为此,你也可以

  • 将web根文件夹添加到包含path ,并include('example/example.php')
  • 或者你可以include($_SERVER['DOCUMENT_ROOT'].'/example/example.php')

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

这里的问题是PHP是一种服务器端语言。 如果纯HTML文档可以根据您在服务器上设置的根url访问文件(即,从您所在的任何子目录访问图像,则可以使用http://img.dovov.comexample.jpg从顶层目录下移),当你使用include (http://img.dovov.comexample.jpg)时,PHP实际上访问服务器根目录

您设置的站点结构实际上位于Apache服务器的文件系统中。 我的网站的根看起来像这样,从服务器的根开始,并下降:

 /home2/siteuserftp/public_html/test/ 

“testing”代表您的网站的根

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

您的文件将基于“test /”的网站根目录,如下所示:

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

Paul Dixon提供的答案是:

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

正是这样可以解决你的问题(不用担心试图find文档根目录replace'DOCUMENT_ROOT',PHP会为你做,只要确保你有'DOCUMENT_ROOT'字面)

编辑:

更多信息DOCUMENT_ROOT和其他PHP SERVERvariables可以在这里find

include()(和require(),fopen()等许多其他函数)在本地文件系统中运行,而不是web根目录。

所以,当你做这样的事情

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

你正试图从你的* nix机器的根目录中包含。

虽然有很多方法可以处理你在做什么,但保罗·迪克森的build议可能是你最好的select。

我在运行Windows和IIS的机器上解决了这个问题:

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

如果您位于本地开发机器上,则可以通过在C:\ Windows \ System32 \ drivers \ etc \ hosts中添加以下内容来强制您的域指向本地主机

 127.0.0.1 www.example.com 

另外,你需要像这样在php.ini中启用allow_url_include

 allow_url_include = On 

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

  1. 做一个C:\ Inetpub \ wwwroot到子驱动器。 W:(WEB内容)。
    子W:C:\ Inetpub \ wwwroot
  1. 编辑php.ini这种方式:追加W:\ include_path,将doc_root更改为W:\

 include_path =“。; c:\ php \ active \ includes; W:\”
 doc_root = W:\

  1. 将子命令放入启动文件夹内的CMD文件中自动进行映射。

现在,两个版本都允许:


     include'/common/common.inc';  //访问映射的W:root
    包括“common / common.inc”;  //访问W:在include_path中

某些版本的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'); }