我正在使用新的服务器主机,$_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__)
并不是有用的解决方案,因为我需要相对路径的主根文件夹。这是服务器配置问题吗?
答案 0 :(得分:1)
/home/<username>/public_html
是默认的user's web content directory used by apache。
激活后,此类个人目录的通常用途是存储一些静态页面(简历,公司/机构中的个人页面...)和小的开发/测试,以便在无需配置任何内容的情况下轻松访问。很久以前,当我在大学工作时,我经常将它们用于学生,以便他们存储和共享作业。
启用此功能后,默认Web服务器/虚拟主机将为个人目录中的页面提供服务,在大多数Linux发行版中,默认情况下,其文档根目录配置为/var/www/html
。
如果您希望从php应用程序的根目录开始拥有文档根目录,则可以:
/var/www/html
如果您无权访问服务器配置,并且只能将文件发布到当前用户的Web目录中,那么……我有个坏消息:您将无法再在DOCUMENT_ROOT
中使用这种情况。
配置apache的详细信息超出了您的问题范围,可能属于其他stackexchange网站。