有没有办法在ftp_put失败时找到原因?

时间:2015-05-06 03:27:50

标签: php ftp

我有一个FTP类,它具有连接,断开,上传和下载文件到其他ftp服务器的功能。

我有这个功能,我想在文本文件中记录上传失败的原因,但是基于ftp_put文档,它只会在失败时返回false:

public function upload($remote_file, $file, $mode = FTP_ASCII) 
{
    if (!ftp_put($this->ftp_connection, $remote_file, $file, $mode)) 
    {
        throw new Exception("There was a problem while uploading $file", 1);
    }

    $this->last_uploaded_file = $file;
    return true;
} 

有没有办法找出ftp_put失败的原因?那些原因是什么?或者我可以记录的唯一错误消息类似于通用消息?:

  

上传文件时出错Foo.bar 2015-01-01 12:01:01

1 个答案:

答案 0 :(得分:1)

PHP FTP函数发出警告,其中包含服务器返回的最后一条错误消息。

所以当发生这种情况时:

> STOR /nonexistingfolder/readme.txt  
< 550 Filename invalid

你收到如下警告:

  

警告:ftp_put():第12行的test.php文件名无效

没有提供更多信息。特别是您无法启用任何类型的FTP会话记录。

当出现本地问题(如不存在的本地文件或权限问题)时,您会收到警告,与任何其他PHP函数一样:

  

警告:ftp_put(nonexisting.txt):无法打开流:第12行的test.php中没有此类文件或目录

那就是说,我发现可疑的是“Foo.bar H:我:Y-m-d”。什么是“H:我:Y-m-d”?您是否未能通过date函数传递日期格式字符串,而是使用格式字符串文字?