ftp_get() 不下载,而是将文件移动到网站根文件夹

ftp_get() does not download, instead moves file to website root folder

我在 CakePHP 下开发了一个网站。我正在尝试将下载系统从 Apache 更改为 FTP。

我目前正在使用 PHP 手动执行 FTP(不使用任何插件或库)。

我的代码成功连接到 FTP 服务器等。我遇到的问题是,当我调用 ftp_get($conn_id, $localFile, $remoteFile, FTP_BINARY) 时,它成功执行,尽管文件没有下载,而是它的移动到 /webroot/ 文件夹,顾名思义,该文件夹用作网站的根文件夹(使用 .httaccess 规则)。

我提到 .httaccess 是因为我可能怀疑这就是导致 FTP 将下载路由到 "moving" 到根目录的原因,但我不确定。

以下是我的FTP下载代码:

    $conn_id = ftp_connect($host);
    $login_result = ftp_login($conn_id,$ftp_user,$ftp_pass);

     if($login_result)
     {
         try 
         {
             if(ftp_get($conn_id, $localFile, $remoteFile, FTP_BINARY))
             {
                 $this->log("Downloaded...","debug");
             }
             else
             {
                 $this->log("Couldn't download...","debug");
             }
         }
         catch(Exception $e)
         {
             $this->log("Error: " . $e->getMessage(),"debug");
         }
     }
     else
     {
         $this->log("Coudln't connect to FTP server...","debug");
     }

     ftp_close($conn_id);

是的,我检查(打印)了 $conn_id$login_result,它们正在工作。

路径里面有什么?

 $remoteFile = "/downloads/rdticoiroe1432584529/YourMusic.zip";
 $localFile = "Music.zip";

代码没有抛出任何错误。我还尝试使用 fotografde/cakephp-ftp 用于 cakephp 和 FTP 的 repo 插件,它的行为相同...

编辑 1:

它是一个音乐下载站点,现在我们使用 Apache 提供文件下载服务(速度很慢),我们的想法是转向 FTP 下载。当客户端请求下载文件时,我正在尝试使用 FTP 协议下载文件。

编辑 2:

这个问题的整个想法是,我试图转向一种更优化的方法来为客户端提供文件。我拥有一个 100Mbit 传输服务器,下载速度非常慢。我目前正在使用 Apache 将文件下载到需要它的客户。

我完全误解了使用 PHP-FTP 向客户端硬盘驱动器提供文件。

因此,我正在寻找一些指导,以了解人们在向请求下载的客户提供文件时使用什么 methods/protocols。 (这是一个音乐下载网站)。

你在这里有一个根本性的误解:FTP 连接中的 "remote file" 是远程 的东西 - 某处另一台服务器上的文件,因为实例。在你的情况下,我认为你试图提供的文件在这个意义上是 "local",但你想要一种更快地将它提供给客户端的方法。

无法将文件推送到客户端的硬盘驱动器(考虑安全隐患),您只能使其可用。现在,客户端可以使用 HTTP 请求它,Apache 将为他们提供内容。如果您安装了 FTP 服务器,他们可以连接到 FTP 客户端并以这种方式请求。同样,您可以安装不同的 Web 服务器,例如 nginx 或 lighttpd,它们可能会更快。

然而,您在 PHP 中所做的任何事情都不会比仅使用 Apache 更快,因为您仍然涉及 Apache,但现在您还拥有 PHP 代码,这充其量需要是时候执行您的代码了,然后再执行 Apache 将要执行的操作。