我在两个相同的实例之一上使用ftp_get()
时遇到了一个奇怪的问题。一个在localhost上,另一个在实际服务器上。我正在使用以下内容通过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服务器上的文件名是什么或它位于何处无关紧要。
在第二个实例上,它与localhost相同(即从同一个git repo中提取)代码,我可以下载一次文件,但是同一个文件无法再次下载,ftp_get()
返回假。如果我在FTP服务器上更改文件的名称,我可以下载它,但之后它将无法再次运行。即ftp_get()
将返回false。
我无法访问FTP服务器日志。如果它可用,我将尝试从主机获取它。但任何人都可以想到这可能发生的原因吗? ftp_get()
只是在没有任何解释的情况下返回true或false,所以我非常坚持这一点。
我使用的是PHP 5.4,我不知道FTP(常规FTP)服务器的规格是什么。
答案 0 :(得分:1)
正如所讨论的,它听起来像ftp_get
成功获取文件并在本地编写。我想知道是否由于权限问题,当它尝试再次在本地写入文件时,它会失败。因此,FTP通道本身很好,问题只是本地的。
我对此感到有些惊讶,因为我认为PHP会引发警告。在调试时,您的error_reporting
是否允许这样做?