PHP如何找到应用程序根目录?

2022-08-30 15:19:35

我的包含文件有问题。当我使用require_once('somefile.php')时,我似乎无法弄清楚如何构造我的URL。如果我尝试在目录结构不同的多个位置使用包含文件,则会收到一个错误,指出找不到包含文件。

在 asp.net,要获取我的应用程序根路径,我可以使用 ~/directory/file.aspx。tild正斜杠总是知道我是从我的网站根目录引用的,并且无论请求来自我的网站中的哪个位置,都可以找到该文件。它始终引用回根目录并从那里查找文件。

问题:如何获取网站的根路径?如何执行此操作,以便可以从网站内的任何位置重用包含文件?我是否必须在网址中使用绝对路径?

谢谢!


答案 1

应该有到您的Web服务器的根路径。$_SERVER['DOCUMENT_ROOT']

编辑:如果你看看大多数主要的php程序。使用安装程序时,通常输入应用程序文件夹的完整路径。安装程序只会将其放在整个应用程序中包含的配置文件中。一种选择是使用自动预置文件来设置变量。另一种选择是在您需要的每个页面上include_once()配置文件。我建议的最后一个选项是使用引导来编写应用程序,这是您通过一个文件(通常使用url_rewrite)汇集所有请求的地方。这使您可以轻松地在一个位置设置/包含配置变量,并使它们在所有脚本中都可用。


答案 2

我通常将文件存储在ROOT目录中,并在我写:config.phpconfig.php

define('ROOT_DIR', __DIR__);

然后只需在所有其他脚本中使用ROOT_DIR常量。使用不是很好,因为:$_SERVER['DOCUMENT_ROOT']

  • 它并不总是匹配ROOT_DIR
  • 此变量在 CGI 模式下不可用(例如,如果您通过 CRON 运行脚本)

推荐