查找public_html目录的文件路径,或者它';相当于使用PHP


Find filepath to public_html directory or it's equivalent using PHP

我正在创建一个.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/etc.

这方面的挑战在于,服务器可能有很多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"));

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

我找到了这个网站,它为我提供了我在搜索网站后找到的唯一好的解决方案。。。

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

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