找到public_html目录的文件路径或使用PHP的等效路径

1l5u6lss  于 12个月前  发布在  PHP
关注(0)|答案(3)|浏览(119)

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

yzckvree

yzckvree1#

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

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

8oomwypt

8oomwypt2#

$pathToRoot = str_repeat('../', substr_count($_SERVER['SCRIPT_NAME'], '/')-1);

此代码计算$_SERVER ['SCRIPT_NAME']上有多少条。在此基础上,它将重复“../”模式的次数,以带您到路线。

8iwquhpp

8iwquhpp3#

我找到了this website,它为我提供了唯一的的解决方案,我发现后,冲刷网页...

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

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

相关问题