захожу на фтп с помощью пхп есть ли возможность сразу определить корневую директорию размещённого там сайта? на некоторорых серверах она называется public_html, на других www.. гугл ничего не дал хотя бы составить список таких имён
Apache/conf/httpd.conf - параметр DocumentRoot (или файл конфигурации любого другого веб-сервера) или PHP: <?php phpinfo(); ?> параметр DOCUMENT_ROOT
да, на двух англоязычных сайтах так и отвечали) вот, если кому надо: PHP: $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$|com.ua$|in.ua$|kiev.ua$|dp.ua$|ua$|co.uk$|cc$|de$|fm$|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$|net.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');
Перебор с глубиной 2-3, по тем что написали 'public_html', 'pages', 'www', 'html', 'htdocs', 'httpdocs', 'httpsdocs', 'docs', 'site', 'wwwroot', 'domains' плюс часто бывает имя домена в качестве веб-диры, так что добавь еще регулярку под этот случай.
Code: омг, куда залил, если он вебдиры не знает? Куда-куда, в корень PHP: ./ а далше курить вот это, http://us3.php.net/manual/en/book.ftp.php с помощью этих команд можно сделать что угодно, например загрузить скрипт, узнающий список дир, сохраняющий это дело в файл и скачать такой файлик обратно к себе скрипт, закачанный в корень, можно запустить с помощью ftp_site
Ну давай поподробнее, как с помощью команд ФТП сервера передаваемых ftp_site ты собираешься выполнить PHP-код???
Ну да, тут я погрячился децл) Зато в процессе эксперимента нашел более клёвый способ, позволяющий решить задачу быстро и без всяких загрузок, а именно - рекурсивно получить список папок, подпапок и файлов в них и, соотвественно, вычислить любые нужные пути: PHP: <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 делать всё что душе угодно
Вот только так и нужно делать. Писал это дело сто лет назад, за кривость кода не ругать )) : PHP: ... 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 и бинг - лажа
пропиши на морде код, отправляющий $_SERVER['SERVER_NAME'] куда надо, через час - прочекай - забери ответ, за час то траф придет какой-нибудь на сайт.