2

我正在创建一个将上传到服务器根目录的 .php 文件。我需要那个 .php 文件来找出 public_html 文件夹的路径或者它的等价物。

我需要这样做,因为我希望我的 .php 文件能够上传到根目录并在任何托管帐户上使用。因为许多托管公司对 public_html 文件夹使用不同的文件路径,甚至称它为不同的名称,所以我试图弄清楚如何检测它。

最好有一个服务器变量或简单的测试来做到这一点。如果没有,public_html 文件夹将始终包含一个特定文件,所以也许我可以搜索这个特定文件并以这种方式获取路径。我只是担心文件名搜索会占用大量内存。

正在执行的 .php 文件位于 ROOT 目录中,需要找到 public_html 文件夹。

像这样:/home/user/file.php

需要检测

/home/user/public_html//home/user/var/www//home/user/website.com/html/等。

4

2 回答 2

5

这样做的挑战是服务器可以有很多public_html,因此在请求的上下文之外没有真正的方法来找出它是什么。

要从 php 脚本中获取此信息(如果您知道访问主机的 url),您可以做的一件事是创建一个名为 docroot.php 的 php 文件,如下所示。

<?php
    if ($_SERVER["REMOTE_ADDR"] == '127.0.0.1'){
            echo $_SERVER["DOCUMENT_ROOT"]; 
    }

然后在你的 file.php 中你会做类似的事情

$docRoot = trim(file_get_contents("http://www.mydomain.com/docroot.php"));

这假设服务器可以通过名称通过本地接口解析到自身。

于 2013-06-21T05:40:02.213 回答
0

我发现这个网站为我提供了我在网上搜索后找到的唯一好的解决方案......

$root = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", "", $_SERVER['SCRIPT_FILENAME']);

它的工作方式是获取文件的完整路径,然后从完整路径中删除文件的相对路径。

于 2017-07-06T15:29:39.613 回答