PHP - opendir на другом сервере - PullRequest
1 голос
/ 14 марта 2011

Я немного новичок в PHP.

У меня есть два разных хоста, и я хочу, чтобы моя php-страница на одном из них показывала мне список каталогов другого.Я знаю, как работать с opendir () на том же хосте, но возможно ли использовать его для получения доступа к другой машине?

Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 14 марта 2011

Попробуйте:

<?php

$dir = opendir('ftp://user:pass@domain.tld/path/to/dir/');

while (($file = readdir($dir)) !== false) {
    if ($file[0] != ".") $str .= "\t<li>$file</li>\n";
}

closedir($dir);

echo "<ul>\n$str</ul>";
6 голосов
/ 14 марта 2011

Вы можете использовать PHP FTP Capabilities для удаленного подключения к серверу и получения списка каталогов:

// set up basic connection
$conn_id = ftp_connect('otherserver.example.com'); 

// login with username and password
$login_result = ftp_login($conn_id, 'username', 'password'); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!";
    exit; 
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// check upload status
if (!$upload) { 
    echo "FTP upload has failed!";
} else {
    echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// Retrieve directory listing
$files = ftp_nlist($conn_id, '/remote_dir');

// close the FTP stream 
ftp_close($conn_id);
0 голосов
/ 02 января 2014

Мне не удалось заставить работать предложения FTP, поэтому я выбрал более нетрадиционный маршрут, в основном он извлекает html со страницы «Index of» и извлекает имена файлов.

Страница указателя:

Индекс / файлы

Родительский каталог 1.jpg 2.jpg

Код извлечения:

    $dir = "http://www.yoursite.com/files/";
    $contents = file_get_contents($dir);
    $lines = explode("\n", $contents);
    foreach($lines as $line) {
        if($line[1] == "l") { // matches the <li> tag and skips 'Parent Directory'
            $line = preg_replace('/<[^<]+?>/', '', $line); // removes tags, curtousy of http://stackoverflow.com/users/154877/marcel
            echo trim($line) . "\n";
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...