【问题标题】:Find filepath to public_html directory or it's equivalent using PHP查找 public_html 目录的文件路径或使用 PHP 等效
【发布时间】:2013-06-18 04:17:44
【问题描述】:

我正在创建一个将上传到服务器根目录的 .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/ 等等。

【问题讨论】:

  • 我建议跟踪 html 文件夹的位置。

标签: php public-html


【解决方案1】:

我找到了this website,它为我提供了我在网上搜索后发现的唯一好的解决方案...

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

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

【讨论】:

    【解决方案2】:

    这样做的挑战是服务器可以有很多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"));
    

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

    【讨论】:

    • 问题是文件在根目录,但需要检测public_html文件夹。如果我使用根目录下的$_SERVER["DOCUMENT_ROOT"],那不就是给我根文件夹吗?
    • $_SERVER["DOCUMENT_ROOT"] == 到http://www.mydomain.com/时的文件系统路径
    • 我想我根据上面的评论得到了你想要的东西,这真的不是由网络服务器本身执行而是作为命令行脚本或通过 cron 执行的吗?
    • 我认为他可能是在终端执行脚本,因此,文档根目录与 apache 中的不一样。
    • @Winston 如果目录位于用户的主目录中,您可以使用~ 文件引用。试试~/public_html/
    猜你喜欢
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2020-02-21
    • 2010-11-21
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多