我有一个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
答案 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
函数传递日期格式字符串,而是使用格式字符串文字?