根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。
- 做一个C:\ Inetpub \ wwwroot到子驱动器。 W:(WEB内容)。
子W:C:\ Inetpub \ wwwroot
- 编辑php.ini这种方式:追加W:\ include_path,将doc_root更改为W:\
include_path =“。; c:\ php \ active \ includes; W:\” doc_root = W:\
- 将子命令放入启动文件夹内的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'); }