【问题标题】:PHP directory list from remote server来自远程服务器的 PHP 目录列表
【发布时间】:2010-12-13 21:34:44
【问题描述】:

如何使用 opendir 函数读取知道其 IP 地址的远程服务器的目录列表?

【问题讨论】:

    标签: php directory


    【解决方案1】:

    假设您尝试使用 HTTP 访问远程服务器,您将无法直接执行此操作。由于 HTTP 真的要访问远程服务器的 Web 服务,因此它控制文件呈现给您的方式。在许多 Web 服务器的情况下,您可以为文件夹内容打开“索引”。这会导致文件夹中的条目在浏览器中显示为 HTML。为了遍历目录结构,你需要解析这个 HTML 来找到路径信息。

    如果您使用的是 FTP,则可以将 ftp://... URL 传递给 opendir()(从 5.0 版开始)。请注意,您的服务器管理员可以关闭此功能。如果您不能直接使用此功能,请参阅 PHP 的 FTP functions 手册(包括用于列出文件的 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);
    
    ?>
    

    【讨论】:

      【解决方案2】:

      对于公众可见的文件/文件夹,您可以使用以下脚本进行操作:No FTP,no strugglin。它会给你一个远程文件夹中的所有文件名。如果可以用浏览器打开该文件夹,也可以用php读取。快乐的吸血;)

      更新:这仅列出可供公众使用的文件,当然不是仅对特定用户可见的文件!

      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>';
      }
      

      【讨论】:

      • 它只给出服务器显示的内容,这是一个部分目录列表。基本上从链接中收集所有路径。未列出。
      • 没问题,但它不是目录列表。例如,它不显示任何 index.html 文件。或任何其他未显示在链接中的文件。如果您需要做的只是从页面中收集所有锚标记,那很好。但是,如果您需要目录列表,那肯定对您没有帮助。
      • 实际上,它将返回该 URL 提供的任何内容,可能是网页。
      • 有什么反对使用PHPs函数file_get_contents而不是你自己的函数get_text?
      【解决方案3】:

      假设您在服务器上为 php 加载了 ftp 扩展,您应该可以使用phps ftp functions

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-31
        • 2015-08-12
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        • 2020-05-30
        相关资源
        最近更新 更多