/在路段始去根文件夹中的PHP不工作包括。
例如“/example/example.php”
解决办法是什么?
/在路段始去根文件夹中的PHP不工作包括。
例如“/example/example.php”
解决办法是什么?
我的根文件夹,假设你的意思是你的web文档根目录,而不是文件系统的根目录。
为此,您可以
include('example/example.php')
include($_SERVER['DOCUMENT_ROOT'].'/example/example.php')
我有这个问题了。 保罗·迪克森的答案是正确的,但也许这将帮助你理解为什么:
这里的问题是,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服务器变量可以在这里找到
包括()(和许多其他功能,如需要(),fopen()函数等)都工作过的本地文件系统,而不是Web根目录。
所以,当你做这样的事
include( "/example/example.php" );
你试图从你的* nix机器的根包括。
虽然有很多方法来接近你正在做的事情众多,保罗·迪克森的建议可能是你最好的赌注。
每个Web服务器都拥有public_html
文件夹,在其中您通常会保留你的文件等。通过使用/
,你不会有机会public_html
,而不是你对主(unaccesible)根直接。 因此,使用$_SERVER['DOCUMENT_ROOT']."/your/locati.on"
代替
我解决了这个运行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
对我来说,下面的技巧的工作。 我使用的是Windows使用IIS,所以DOCROOT是C:\的Inetpub \ wwwroot文件。
subst W: C:\Inetpub\wwwroot
include_path = ".;c:\php\active\includes;W:\" doc_root = W:\
现在,这两个版本允许:
include '/common/common.inc'; // access to mapped W: root include 'common/common.inc'; // access to W: within 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');
}