Я буду говорить с точки зрения Apache httpd, так как это очень популярный веб-сервер.
Корневой каталог, в котором хранятся все файлы, обычно называется DocumentRoot.
Помните, что файлы хранятся в DocumentRoot для обслуживания веб-сервером, а не для отображения при входе по FTP. FTP - это совершенно другой протокол, который не связан с веб-сайтами, и в этом контексте это просто способ позволить вам, пользователю, изменять / обновлять файлы на удаленном сервере.
Каталог www / public_html, о котором вы говорите в своем вопросе, вероятно, не DocumentRoot. Это дополнительная функциональность Apache, модуля mod_userdir. Пожалуйста, ознакомьтесь с его документацией.
Как сказано в документации, есть параметр UserDir в файле конфигурации Apache, который позволяет настроить имя этих каталогов пользователей, из которых веб - сервер будет обслуживать сайты , которые принадлежат разным пользователям.
Поскольку нет никаких ограничений на UserDir, вы можете иметь что - либо там, даже Foobar. По содержанию этого каталога (файлы HTML, изображения) вы можете судить о том, что это может быть пользовательский каталог, содержащий сайт, предоставляемый Apache. Но я бы сказал, что делать это автоматически с помощью скрипта мне кажется ненадежным. Не говоря уже о том, что, например, у вас может быть каталог public_html, который не является каталогом пользователя, его имя соответствует значению по умолчанию для параметра Apache UserDir, что является простым совпадением. В идеале, чтобы судить о каталоге, если это UserDir, вам нужен доступ к файлу конфигурации веб-сервера. И обычно у вас его нет. Провайдеры веб-хостинга могут размещать в своем домашнем каталоге самое большее количество пользовательских журналов.
Подводя итог: если вам нужно выполнить какие-либо действия с пользовательским каталогом, пусть он поступит в ваш скрипт в качестве входных данных: аргумент командной строки, настройки из файла конфигурации и т.д., Но не пытайтесь угадать его.