Как получить абсолютный путь к папке public_html?

$_SERVER['DOCUMENT_ROOT'] 

возвращается

 /usr/local/apache/htdocs/ 

есть ли способ получить

 /home/user/public_html/ 

Проблема в том, что я должен написать скрипт, который может находиться в папке public_html или подпапке в папке public_html. Сценарий должен сохранять загруженные файлы в папку в каталоге public_html (например, изображения). Другими словами, скажем, что мой файл – test.php, и путь к нему

 /home/user/public_html/test/test.php. 

И есть папка

 /home/user/public_html/images 

где файлы, загруженные через test.php, должны быть сохранены. Я не знаю, где будет запускаться файл test.php. Например, он может быть на пути

 /home/user/public_html/test/another-dir/test.php 

Как получить путь к папке с изображениями, не зная, где будет файл test.php?

    то, что я нашел сегодня, после прочтения этого вопроса и продолжения моего googlesurf:

    https://docs.joomla.org/How_to_find_your_absolute_path

     <?php $path = getcwd(); echo "This Is Your Absolute Path: "; echo $path; ?> 

    работает на меня

    Где находится файл, который вы используете? Если он находится в вашей общедоступной папке html, вы можете сделать echo dirname(__FILE__);

    Предположим, что show_images.php находится в папках, а корень сайта – public_html , поэтому:

     echo dirname(__DIR__); // prints '/home/public_html/' echo dirname(__FILE__); // prints '/home/public_html/images' 

    Всякий раз, когда вам нужна какая-либо информация о конфигурации, вы можете использовать phpinfo() .

    поместите anyfile в каталоги, которые вы хотите найти, в этом случае поместите «root» в public_html

     /home/user/public_html/root <- note that 'root' is not a folder (you can use root.txt if u want) 

    И используйте эту функцию

     function findThis($get){ $d = ''; for($i = 0; $i < 20; $i++){//this will try 20 times recursively on upper folder if(file_exists($d.$get)){ return $d; }else{ $d.="../"; } } } 

    и получить значение, вызвав его

     $pathToRoot = findThis('root'); 

    И он вернется, например, dir php script

     /home/user/public_html/test/another-dir/test.php 

    поэтому $ pathToRoot будет

     $pathToRoot => "../../../" 

    Это тот, кого ты хочешь?

    Из любопытства, почему бы вам просто не использовать URL-адрес для указанной папки?

    http://www.mysite.com/images

    Предполагая, что папка никогда не изменяет местоположение, это был бы самый простой способ сделать это.

    с функцией preg_replace, чтобы найти абсолютный путь от __FILE__ вы можете легко найти что-нибудь домашнее. Здесь короткий мой код:

    $ path_image_you_want = preg_replace ('# / public_html /([^/]+?)/.*#', '/ public_html / $ 1 / images ", __FILE__ );

    Это очень старый, но я наткнулся на него, и это сработало для меня.

     <?php //Get absolute path $path = getcwd(); //strip the path at your root dir name and everything that follows it $path = substr($path, 0, strpos($path, "root")); echo "This Is Your Absolute Path: "; echo $path; //This will output /home/public_html/ ?> 

    Вы также можете использовать dirname в dirname, чтобы добраться туда, где вы хотите быть.

    Пример использования:

    Для Joomla модули всегда будут установлены в /public_html/modules/mod_modulename/

    Таким образом, изнутри файла в папке модуля, чтобы добраться до установочного корня Joomla на любом сервере, я мог бы использовать: $path = dirname(dirname(dirname(__FILE__)));

    То же самое касается WordPress, где плагины всегда находятся в wp-content/plugins/

    Надеюсь, это поможет кому-то.