到根的 PHP 绝对路径

2022-08-30 10:59:54

我不敢相信PHP没有一个简单的解决方案来解决这个简单的事情。ASP.NET 有一个~符号来处理这个问题,并从根级别开始一切。这是我的问题:

localhost/MySite
   -->Admin
      -- Edit.php
   -->Class
      -- class.EditInfo.php
   -->Texts
      -- MyInfo.txt
   --ShowInfo.php

内部类。EditInfo.php我正在访问MyInfo.txt所以我定义了一个相对路径”。/Texts/MyInfo.txt”。然后我在Admin/Edit中创建一个EditInfo对象.php并访问Texts/MyInfo.txt - 它工作正常。

但是现在我必须在ShowInfo中创建一个EditInfo对象.php并访问Texts/ MyInfo.txt这就是发生的问题。由于我在课堂上使用相对路径,因此每当我创建objEditInfo并尝试访问MyInfo时.txt我都会收到“文件不存在”错误。

现在我正在寻找与 ASP.NET 中的“~/Texts/MyInfo.txt”等效的东西。有没有类似的东西???还是我必须使用一些if/else条件来设置路径?


更新:

我用了 $_SERVER['DOCUMENT_ROOT']。我使用的是我实际网站的子文件夹。所以我不得不使用_SERVER美元['DOCUMENT_ROOT']。/mySite“,然后将地址的其余部分(”/Texts/MyInfo.php“)添加到其中。


答案 1

使用 中的以下命令创建具有根目录绝对路径的常量:defineShowInfo.php

define('ROOTPATH', __DIR__);

或 php <= 5.3

define('ROOTPATH', dirname(__FILE__));

现在使用它:

if (file_exists(ROOTPATH.'/Texts/MyInfo.txt')) {
  // ...
}

或者使用 中定义的 :DOCUMENT_ROOT$_SERVER

if (file_exists($_SERVER['DOCUMENT_ROOT'].'/Texts/MyInfo.txt')) {
  // ...
}

答案 2

在 PHP 中有一个全局变量,其中包含与服务器相关的各种详细信息。它被称为_SERVER美元。它还包含根:

 $_SERVER['DOCUMENT_ROOT']

唯一的问题是此变量中的条目由 Web 服务器提供,并且不能保证所有 Web 服务器都提供这些条目。


推荐