【问题标题】:How to locate public folder using PHP?如何使用 PHP 定位公用文件夹?
【发布时间】:2012-03-02 14:25:11
【问题描述】:

我正在用 PHP 编写安装脚本,我的部分应用程序可能安装在公用文件夹上一层的文件夹中。通常,公用文件夹称为“public_html”,但并非总是如此。有没有一些简单的方法可以使用 PHP 找到根公用文件夹的名称或路径?

【问题讨论】:

  • 你怎么知道你的脚本总是可以访问那个文件夹,如果它甚至存在的话?无论如何,只需使用../
  • 关于权限是正确的,但我想我会单独处理。当我的安装脚本在子域上运行时,../ 可能不起作用,该子域通常具有像 public_html/subdomain/ 这样的站点根目录。使用 ../ 会将我带到 public_html,但我需要更上一层楼。

标签: php public-html


【解决方案1】:
  1. $_SERVER['DOCUMENT_ROOT'] 将提供直到 public_html 的完整路径,您可以使用斜杠“/”展开并获取展开后数组的最后一个索引。
  2. 如果您不知道实际的文件名,您也可以使用带有参数“../”的realpath。这将返回public_html 的完整父路径。

希望这两个中的一个对你有用:)

【讨论】:

  • 谢谢,但我不知道我的安装脚本是从哪里运行的。它可能是 public_html/install.php,但也可能来自 public_html/subfolder/install.php。对于这两种情况 $_SERVER['DOCUMENT_ROOT'] 会给我不同的结果。而且我无法在任一路径中查找“public_html”,因为该目录可能被称为其他名称,例如“www”。
【解决方案2】:

试试$_SERVER['DOCUMENT_ROOT']。 (documentation)

如果要获取上面的目录,可以使用dirname

Brad 确实有一点,不过;您的脚本可能无权访问该目录。

【讨论】:

  • 我认为他想要文档根目录上方的文件夹。
  • 为了确保您可以写入网络根目录上方的文件夹...$levelUp = dirname($_SERVER['DOCUMENT_ROOT']); if (is_writable($levelUp)) { ... }
  • 当一个站点在子域上时,$_SERVER['DOCUMENT_ROOT'] 给了我类似 /home1/user/public_html/subdomain 的东西。并且 public_html 可以在不同的服务器上被称为别的东西。
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
相关资源
最近更新 更多