Список каталогов PHP с удаленного сервера

Как я могу использовать функцию opendir для чтения списка каталогов удаленного сервера, зная его IP-адрес?

Solutions Collecting From Web of "Список каталогов PHP с удаленного сервера"

Предполагая, что вы пытаетесь получить доступ к удаленному серверу с помощью HTTP, вы не сможете сделать это напрямую. Поскольку HTTP действительно получает доступ к веб-службе вашего удаленного сервера, он контролирует, как файлы будут представлены вам. В случае многих веб-серверов вы можете включить «индексы» для содержимого папки. Это приводит к тому, что записи в папке будут отображаться в вашем браузере как HTML. Чтобы пройти через структуру каталогов, вам нужно проанализировать этот HTML-код, чтобы найти информацию о пути.

Если вы используете FTP, вы можете передать URL-адрес ftp://... в opendir() с версии 5.0. Обратите внимание, что эта возможность может быть отключена администратором сервера. Если вы не можете использовать эту функцию напрямую, см. Руководство по функциям FTP для PHP (в том числе ftp_nlist() для листинга файлов).

Пример из приведенных выше ссылок:

 <?php // set up basic connection $conn_id = ftp_connect($ftp_server); // login with username and password $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // get contents of the current directory $contents = ftp_nlist($conn_id, "."); // output $contents var_dump($contents); ?> 

Для файлов / папок, которые видны публике, вы можете сделать это с помощью этого скрипта: Нет FTP, не борется. Он вернет вам все имена файлов в удаленной папке. Если вы можете открыть папку в браузере, вы также можете прочитать ее с помощью php. Счастливый личинг;)

UPDATE: отображает только файлы, доступные для публики, а не файлы, которые видны только для определенного пользователя!

 function get_text($filename) { $fp_load = fopen("$filename", "rb"); if ( $fp_load ) { while ( !feof($fp_load) ) { $content .= fgets($fp_load, 8192); } fclose($fp_load); return $content; } } $matches = array(); preg_match_all("/(a href\=\")([^\?\"]*)(\")/i", get_text('http://www.xxxxx.com/my/cool/remote/dir'), $matches); foreach($matches[2] as $match) { echo $match . '<br>'; } 

Предполагая, что у вас есть расширение ftp, загруженное для php на вашем сервере, вы должны иметь возможность использовать функции php ftp