Подтвердить что ты не робот

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

$_SERVER['DOCUMENT_ROOT']

возвращает

/usr/local/apache/htdocs/

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

/home/user/public_html/

Проблема в том, что я должен написать script, который может находиться в папке public_html или вложенной папке в папке public_html. script должен сохранять загруженные файлы в папку в каталоге 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?

4b9b3361

Ответ 1

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

https://docs.joomla.org/How_to_find_your_absolute_path

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

поместите 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 => "../../../"

Это тот, который вам нужен?

Ответ 6

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

http://www.mysite.com/images

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

Ответ 7

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

<?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/
?>

Ответ 8

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

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

Ответ 9

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

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

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

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

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

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