2011-03-13 499 views
1

我對PHP有點新鮮。PHP - opendir在另一臺服務器上

我有兩個不同的主機,我想我的PHP頁面中的其中一個向我顯示另一個目錄列表。我知道如何在同一臺主機上使用opendir(),但是可以使用它來訪問另一臺機器嗎?

在此先感謝

+0

沒有抽象的「服務器」連接到。你必須指定某個**協議**,遠程服務器支持並且你將要使用。 – 2011-03-13 23:08:48

回答

6

你可以使用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); 
6

嘗試:

<?php 

$dir = opendir('ftp://user:[email protected]/path/to/dir/'); 

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

closedir($dir); 

echo "<ul>\n$str</ul>"; 
0

我無法得到FTP的建議工作,所以我採取了一個非常規的路線,基本上它從「索引」頁面中抽取html並提取文件名。

索引頁:

的索引/文件

  • Parent Directory
  • 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"; 
         } 
        } 
    
    相關問題