PHP如何找到应用程序root?

25 php include-path

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

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

问题:如何获取我网站的根路径?我该怎么做才能在网站的任何地方重用我的包含文件?我必须在网址中使用绝对路径吗?

谢谢!

Jon*_*uhn 21

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

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


bar*_*hin 10

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

define('ROOT_DIR', __DIR__);

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

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

  • 要在所有其他脚本中使用ROOT_DIR常量,您必须将包含它的文件包含在所有其他脚本中.所以,再次出现同样的问题. (5认同)