【问题标题】:PHP FTP download failed with "failed to open stream: Error downloading"PHP FTP 下载失败,“无法打开流:下载错误”
【发布时间】:2017-07-31 06:31:30
【问题描述】:

我正在尝试从 FTP 服务器(使用 FileZilla 服务器)下载到我的本地计算机,但我不断收到错误

这是我的代码

<?php
// connect and login to FTP server
$ftp_server = "127.0.0.1";
$ftp_username = "myusername";
$ftp_userpass = "mypassword";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
echo "success connect to FTP";

$local_file = "C:\Users\PROSIA\Desktop\test.docx";
$server_file = "C:\Users\PROSIA\Documents\dummyfile.docx";

// download server file
if (ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII))
  {
  echo "Successfully written to $local_file.";
  }
else
  {
  echo "Error downloading $server_file.";
  }
ftp_close($ftp_conn); 

这是我得到的错误:

警告:ftp_get(C:\Users\PROSIA\Desktop est.docx):无法打开流: 下载 C:\Users\PROSIA\Documents\dummyfile.docx 时出错。

我的代码逻辑是$local_file 是将下载的文件保存到我的本地计算机的路径,$server_file 是从 FTP 服务器下载文件的路径

所以我对第一个警告感到有点困惑,“无法打开流”,而文件还不存在并且它似乎有空白空间(它应该是 \Desktop\test.docx 而不是 Desktop est.docx)

还有一个问题,我可以直接阅读而不下载吗?

【问题讨论】:

    标签: php ftp filezilla


    【解决方案1】:

    您不能在 FTP 协议中使用绝对路径来远程文件。

    FileZilla FTP 服务器在其配置中具有映射,可将远程文件系统投影到虚拟 FTP 文件树中。您必须使用虚拟文件树的路径。

    例如C:\Users\PROSIA 可以映射到类似/users/PROSIA 的东西。在这种情况下,您使用:

    $server_file = "/users/PROSIA/dummyfile.docx";
    

    您可能根本没有配置映射。因此,在您进行映射之前,您无法真正访问该文件。

    首先使用一些 GUI FTP 客户端连接到 FTP 服务器,然后尝试定位文件。客户端将向您显示在您的代码中使用的正确路径。


    您遇到的下一个问题是您需要启用 FTP 被动模式。如果您在 NAT 上的防火墙后面,默认的活动模式几乎不会起作用。请参阅我在network configuration needed for active and passive FTP modes 上的文章。

    要切换到被动模式,请使用ftp_pasv function

    ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
    ftp_pasv($ftp_conn, true);
    

    是的,您无需下载即可阅读。

    【讨论】:

    • 感谢您的回答,读取的文件工作正常但下载仍然无法正常工作,然后我尝试使用 fireftp(mozil addon) 下载但它也不起作用(也许是特权?我已经检查所有(读、写、删除、追加、创建、删除、列表、+子目录))
    • “读取文件”是什么意思?你的意思是目录列表吗?下载时遇到什么错误?使用一些可以进行日志记录的 FTP 客户端并向我们显示日志。
    • 我的意思是使用 php 从 ftp 服务器读取文件。这是我收到的错误警告:ftp_get(/users/PROSIA/Deskstop/test.docx):无法打开流:C:\xampp\htdocs\xxx.phtml 中没有这样的文件或目录和警告:ftp_get():在 C:\xampp\htdocs\xxx.phtml 打开 /users/PROSIA/Deskstop/test.docx 时出错 下载 /users/PROSIA/Documents/dummyfile.docx 时出错。
    • 对不起,我不明白。那么什么“工作正常”? - 无论如何,首先使用独立的 FTP 客户端进行下载。在普通的 FTP 工作之前,尝试 PHP 没有意义。
    猜你喜欢
    • 1970-01-01
    • 2013-12-07
    • 2019-12-17
    • 2023-03-27
    • 1970-01-01
    • 2015-07-31
    • 2015-01-03
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多