1

Является ли корневой каталог, в котором хранятся все файлы (непосредственно от доступа по FTP), всегда "www" или "public_html" в зависимости от того, какая ОС? Или возможно переименовать эту папку? И если так, что может быть уникальным в этой папке, чтобы можно было ее идентифицировать? то есть в настоящее время я только что написал это;

my $root;
my $ftp = Net::FTP->new($DB_ftpserver, Debug => 0) 
                              or die "Cannot connect to some.host.name: $@";
$ftp->login($DB_ftpuser, $DB_ftppass) or die "Cannot login ", $ftp->message;
my @list = $ftp->dir;

if( scalar @list != 0 ) {
  foreach( @list ){
     if( $_ =~ m/www$/g ){
       $root = "www";
       last;
     }elsif( $_ =~ m/public_html$/g ){
       $root = "public_html";
       last;
     }
   }
 }

но не будет работать, если у него есть другое имя.

Любая помощь высоко ценится.

3 ответа3

2

Я буду говорить с точки зрения Apache httpd, так как это очень популярный веб-сервер.

Корневой каталог, в котором хранятся все файлы, обычно называется DocumentRoot. Помните, что файлы хранятся в DocumentRoot для обслуживания веб-сервером, а не для отображения при входе по FTP. FTP - это совершенно другой протокол, который не связан с веб-сайтами, и в этом контексте это просто способ позволить вам, пользователю, изменять / обновлять файлы на удаленном сервере.

Каталог www / public_html, о котором вы говорите в своем вопросе, вероятно, не DocumentRoot. Это дополнительная функциональность Apache, модуля mod_userdir. Пожалуйста, ознакомьтесь с его документацией.

Как сказано в документации, есть параметр UserDir в файле конфигурации Apache, который позволяет настроить имя этих каталогов пользователей, из которых веб - сервер будет обслуживать сайты , которые принадлежат разным пользователям.

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

Подводя итог: если вам нужно выполнить какие-либо действия с пользовательским каталогом, пусть он поступит в ваш скрипт в качестве входных данных: аргумент командной строки, настройки из файла конфигурации и т.д., Но не пытайтесь угадать его.

0

Все зависит от конфигурации сервера по умолчанию. Вы также можете настроить другое местоположение.

В Windows это может быть:

C:\ XAMPP \ HTDOCS \

или же

C:\ ВХост \ Public \ WWW \

или где-то иначе.

Принадлежит суперпользователю, не так ли?

0

Имя настраивается в Apache (DocumentRoot - по умолчанию, согласно документации 2.2.x, это /usr /local /apache /htdocs). Моя машина в офисе не использует ни один из упомянутых вами вариантов (я думаю, что он использует htdocs, но давно, с тех пор, как я в последний раз возился с ним).

OTOH, так как вы упоминаете FTP, возможно, вы думаете о чем-то еще; однако базовый каталог все еще настраивается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .