1

ftp_get()在两个相同实例之一上使用时遇到了一个奇怪的问题。一个在本地主机上,另一个在实际服务器上。我正在使用以下内容通过 FTP 下载文件。两个实例都从具有相同凭据和相同路径的相同 FTP 服务器下载。

$result = ftp_get($connection, $downloadPath, $serverPath, FTP_BINARY);

    if ($result) {
        $successfulWrites[] = $downloadPath;    // file name only without path
    } else {
        // on second attempt to download file with same name, ftp_get() returns false
        // this is where I throw an exception in my code
}

在我的本地主机上,我可以一遍又一遍地下载同一个文件,而 FTP 服务器上的文件名是什么或它位于何处都没有关系。

在第二个实例上,就代码而言,它与本地主机的(即从同一个 git 存储库中提取)相同,我可以下载一次文件,但不能再次下载相同的文件,并ftp_get()返回 false。如果我在 FTP 服务器上更改文件的名称,我可以下载它,但之后它就不能再工作了。即将ftp_get()返回false。

我无权访问 FTP 服务器日志。如果有的话,我今天会尝试从主机那里得到它。但是任何人都可以想到可能发生这种情况的原因吗?ftp_get()只是返回真或假而没有任何解释,所以我很坚持这一点。

我正在使用 PHP 5.4,但我不知道 FTP(常规 FTP)服务器的规范是什么。

4

1 回答 1

1

正如所讨论的,这听起来像是ftp_get成功获取文件并在本地写入。我想知道是否由于权限问题,当它再次尝试在本地写入文件时,它会失败。因此,FTP 通道本身很好,问题只是本地的。

不过,我对此感到有些惊讶,因为我想 PHP 会发出警告。您error_reporting在调试时是否允许这样做?

于 2014-01-21T17:23:04.520 回答