PHP:DIR和DOCUMENT_ROOT返回不同的路径

时间:2019-05-13 19:20:38

标签: php

我正在使用新的服务器主机,$_SERVER["DOCUMENT_ROOT"]无法正常工作,因为返回的路径与实际路径不同。

例如,我在服务器上的includes/inc.php文件夹中添加了public_html,并使用了以下代码:

include_once($_SERVER["DOCUMENT_ROOT"] . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'inc.php');

这是结果:

Warning: include_once(/var/www/html/includes/inc.php): failed to open stream: No such file or directory in /home/tom_server/public_html/index.php on line 4

$_SERVER["DOCUMENT_ROOT"]返回了意外的消息。如果我使用dirname(__FILE__),它将返回正确的路径:

/home/tom_server/public_html/includes/inc.php

但是dirname(__FILE__)并不是有用的解决方案,因为我需要相对路径的主根文件夹。这是服务器配置问题吗?

1 个答案:

答案 0 :(得分:1)

如果启用了此功能,则

/home/<username>/public_html是默认的user's web content directory used by apache

激活后,此类个人目录的通常用途是存储一些静态页面(简历,公司/机构中的个人页面...)和小的开发/测试,以便在无需配置任何内容的情况下轻松访问。很久以前,当我在大学工作时,我经常将它们用于学生,以便他们存储和共享作业。

启用此功能后,默认Web服务器/虚拟主机将为个人目录中的页面提供服务,在大多数Linux发行版中,默认情况下,其文档根目录配置为/var/www/html

如果您希望从php应用程序的根目录开始拥有文档根目录,则可以:

  • 快速而又丑陋:将您的应用程序文件移至/var/www/html
  • 单个用户/应用解决方案:修改默认的网络服务器以指向您的应用(在原位置或在新文件夹中)。
  • 首选:为您的应用使用专用文件夹,并在apache中配置新的Virtual Host

如果您无权访问服务器配置,并且只能将文件发布到当前用户的Web目录中,那么……我有个坏消息:您将无法再在DOCUMENT_ROOT中使用这种情况。

配置apache的详细信息超出了您的问题范围,可能属于其他stackexchange网站。