Просмотр полной версии : как узнать путь к webpath (например /public_html) на фтп-серверах?
захожу на фтп с помощью пхп
есть ли возможность сразу определить корневую директорию размещённого там сайта?
на некоторорых серверах она называется public_html, на других www..
гугл ничего не дал
хотя бы составить список таких имён
FireFenix
16.06.2009, 19:42
Apache/conf/httpd.conf - параметр DocumentRoot (или файл конфигурации любого другого веб-сервера)
или
<?php phpinfo(); ?>
параметр DOCUMENT_ROOT
Он же на фтп заходит, толку с этого?
да, на двух англоязычных сайтах так и отвечали)
вот, если кому надо:
$webpath = '(([a-zA-Z0-9\-](\.|_)(asia$|com$|net$|org$|biz$|name$|mobi$|info$ |com$|net$|ch$|uk$|us$|pro$|eng.pro$|aca.pro$|bar. pro$|cpa.pro$|jur.pro$|law.pro$|med.pro$|ru$|su$|c om.ua$|in.ua$|kiev.ua$|dp.ua$|ua$|co.uk$|cc$|de$|f m$|in$|kz$|me$|nu$|tv$|ws$|ac$|ag$|am$|at$|be$|bz$ |cn$|gs$|h$|io$|it$|la$|mn$|ms$|com.mx$|co.nz$|pl$ |sc$|sh$|tc$|tj$|tk$|tm$|tw$|uz$|vc$|vg$|com.ag$|n et.ag$|org.ag$|com.bz$|net.bz$|com.hn$|net.hn$|org .hn$|net.nz$|org.nz$|com.pl$|net.pl$|org.pl$|info. pl$|com.sc$|net.sc$|org.sc$|com.tw$|org.tw$|com.vc $|net.vc$|org.vc)))';
$folders = array('public_html', 'pages', 'www', 'html', 'htdocs', 'httpdocs', 'httpsdocs', 'docs', 'site', 'wwwroot', 'domains');
$found = 0;
foreach($dirs as $dir)
if($dir != '.' || $dir != '..')
if(in_array($dir, $folders))
{
$found = $dir;
break;
}elseif(preg_match($webpath, $dir)){
$found = $dir;
break;
}else
continue;
if(!$found) die('webpath not found');
FireFenix
16.06.2009, 21:23
Он же на фтп заходит, толку с этого?
Залил и выполнил :)
как ты выполнишь скрипт на фтп-сервере, не зная доменного имени и корневой папки веб-сервера?
FireFenix
16.06.2009, 22:55
как ты выполнишь скрипт на фтп-сервере, не зная доменного имени и корневой папки веб-сервера?
Ты не говорил, что ты незнаешь домена :)
захожу на фтп с помощью пхп
есть ли возможность сразу определить корневую директорию размещённого там сайта?
Перебор с глубиной 2-3, по тем что написали
'public_html', 'pages', 'www', 'html', 'htdocs', 'httpdocs', 'httpsdocs', 'docs', 'site', 'wwwroot', 'domains'
плюс часто бывает имя домена в качестве веб-диры, так что добавь еще регулярку под этот случай.
Залил и выполнил :)
омг, куда залил, если он вебдиры не знает?
Pashkela
17.06.2009, 02:23
омг, куда залил, если он вебдиры не знает?
Куда-куда, в корень
./
а далше курить вот это,
http://us3.php.net/manual/en/book.ftp.php
с помощью этих команд можно сделать что угодно, например загрузить скрипт, узнающий список дир, сохраняющий это дело в файл и скачать такой файлик обратно к себе
скрипт, закачанный в корень, можно запустить с помощью ftp_site
омг, куда залил, если он вебдиры не знает?
Куда-куда, в корень
./
а далше курить вот это,
http://us3.php.net/manual/en/book.ftp.php
с помощью этих команд можно сделать что угодно, например загрузить скрипт, узнающий список дир, сохраняющий это дело в файл и скачать такой файлик обратно к себе
скрипт, закачанный в корень, можно запустить с помощью ftp_site
Ну давай поподробнее, как с помощью команд ФТП сервера передаваемых ftp_site ты собираешься выполнить PHP-код???
Pashkela
17.06.2009, 04:22
Ну да, тут я погрячился децл:)) Зато в процессе эксперимента нашел более клёвый способ, позволяющий решить задачу быстро и без всяких загрузок, а именно - рекурсивно получить список папок, подпапок и файлов в них и, соотвественно, вычислить любые нужные пути:
<pre>
<?php
@set_time_limit(0);
@ini_set("display_errors","1");
$ftp_server = 'фтп-сервер';
$ftp_user_name = 'фтп-логин';
$ftp_user_pass = 'фтп-пароль';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Рекурсивно получаем список всех файлов и директорий на ФТП
$buff = ftp_rawlist($conn_id, '/', TRUE);
ftp_close($conn_id);
var_dump($buff);
?>
</pre>
а уж с полученным массивом $buff делать всё что душе угодно
а уж с полученным массивом $buff делать всё что душе угодно
Вот только так и нужно делать. Писал это дело сто лет назад, за кривость кода не ругать )) :
...
function iswebdir($dir){
$strs = array("public_html","www","pages","html","htdocs","httpdocs","docs","site","wwwroot");
foreach ($strs as $ptrn){
if ($dir == $ptrn)
return 1;
}
return 0;
}
...
$filelist = ftp_rawlist($conn, $rootdir);
foreach ($filelist as $raw){
$filename = trim(substr($raw, strrpos($raw, " ")));
$len = strlen($filename);
if (substr($filename, $len-1) == "/")
$filename = substr($filename, 0, $len - 1);
if ($slash = strrpos($filename, "/"))
$filename = substr($filename, $slash + 1);
if (substr($raw, 0, 1) == "d" OR strstr($raw, "<DIR>")){
if (iswebdir($filename)){
if (substr($rootdir,-1)=="/")
$wb = $rootdir.$filename;
else
$wb = $rootdir."/".$filename;
$webdirs[] = $wb;
}
}
}
$webdirs[] = $rootdir;
спасибо
мутная это тема - искать домен по айпи
если займетесь этим - скажу что то что выдают сервисы типа 1whois.ru и бинг - лажа
спасибо
мутная это тема - искать домен по айпи
если займетесь этим - скажу что то что выдают сервисы типа 1whois.ru и бинг - лажа
пропиши на морде код, отправляющий $_SERVER['SERVER_NAME'] куда надо, через час - прочекай - забери ответ, за час то траф придет какой-нибудь на сайт.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot