根路径不适用于php include

43 php path include root

/在一个链接的开头,到达根文件夹在php include中不起作用.

例如"/example/example.php"

解决办法是什么?

Pau*_*xon 58

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

为此,你也可以

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


Ian*_*Ian 30

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

这里的问题是PHP是一种服务器端语言.纯HTML文档可以根据您在服务器上设置的根URL访问文件(即,从您使用的任何子目录访问图像,您将使用/images/example.jpg从顶层目录向下),PHP实际访问使用时的服务器根目录include (/images/example.jpg)

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

/home2/siteuserftp/public_html/test/
Run Code Online (Sandbox Code Playgroud)

"test"代表您的站点根目录

所以回答你的问题为什么你的PHP包含没有得到你想要的结果(它完全正常工作)是因为你要求PHP代码尝试在服务器根目录找到你的文件,当它实际上是位于您网站的HTML根目录,如上所示.

您的文件将基于"test /"的站点根目录,并且看起来像这样:

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

Paul Dixon提供的答案是:

include($_SERVER['DOCUMENT_ROOT'].'/example/example.php')
Run Code Online (Sandbox Code Playgroud)

正是解决问题的方法(不要担心尝试找到文档根来替换'DOCUMENT_ROOT',PHP会为你做.确保你有'DOCUMENT_ROOT'字样)

编辑:

更多信息可以在此处找到 DOCUMENT_ROOT和其他PHP SERVER变量


Pet*_*ley 5

include()(以及许多其他函数,如require(),fopen()等)都可以在本地文件系统上工作,而不是在web根目录下工作.

所以,当你做这样的事情

include( "/example/example.php" );
Run Code Online (Sandbox Code Playgroud)

您试图从*nix机器的根目录中包含.

虽然有很多方法可以接近你正在做的事情,但保罗迪克森的建议可能是你最好的选择.


小智 5

每个 Web 服务器都有一个public_html文件夹,您通常会在其中保存文件等。通过使用/,您将无法访问public_html,而是直接指向主(无法访问的)根目录。所以,$_SERVER['DOCUMENT_ROOT']."/your/locati.on"改用