所有文件保存的根目录(直接从 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;
}
}
}
但如果名称不同则不起作用。
任何帮助都非常感谢。
答案1
我将就 Apache httpd 进行讨论,因为它是一种非常流行的网络服务器。
保存所有文件的根目录通常命名为文档根目录。请记住,文件保存在文档根目录为了正在被服务由网络服务器提供,而不是在您通过 FTP 登录时显示给您。FTP 是一种完全不同的协议,与网站无关,在这种情况下,它只是一种允许您(用户)修改/更新远程服务器上文件的方式。
这万维网/公共的html您在问题中提到的目录可能不是文档根目录。这是 Apache 的附加功能,mod_userdir模块。请咨询其文档。
正如文档中所说,有一个用户目录Apache 配置文件中的设置可以让您自定义这些用户目录的名称,Web 服务器将从这些目录为属于不同用户的站点提供服务。
由于没有限制用户目录,你可以在那里得到任何东西,甚至福巴。你可以根据此目录的内容(HTML 文件、图像)判断,这可能是一个包含 Apache 公开的站点的用户目录。但我认为使用脚本自动执行此操作对我来说似乎不可靠。更不用说例如你可以有一个公共的html非用户目录的目录,其名称与 Apache 的默认值匹配用户目录设置只是一个简单的巧合。理想情况下,为了判断一个目录是否是用户目录,您需要访问 Web 服务器的配置文件。通常您没有这个权限。Web 托管提供商最多可以将特定于用户的日志放在您的主目录中。
总结一下:如果您需要对用户目录执行任何操作,请将其作为输入数据输入到您的脚本中:命令行参数、配置文件中的设置等,但不要试图猜测它。
答案2
该名称可在 Apache 中配置(文档根目录- 根据 2.2.x 文档,默认为 /usr/local/apache/htdocs。我办公室的机器不使用您提到的任何选项(顺便说一下,我认为它使用 htdocs,但距离我上次摆弄它已经有一段时间了)。
另一方面,既然您提到了 FTP,也许您正在考虑别的事情;不过,基本目录仍然是可配置的。