ftp_fget()返回一个警告文件不存在...避免警告而不更改错误报告级别

时间:2011-10-24 14:31:28

标签: php ftp

我正在连接FTP并下载文件。文件名基于日期,因此10242011.csv将是脚本今天尝试下载的文件。有时文件一天不存在。我有以下代码,但我仍然收到一个php警告:

Warning: ftp_fget() [function.ftp-fget]: 10242011.csv: The system cannot find the file specified. in /home/rick/public_html/cron/main.php on line 68

以下是代码:

if (!ftp_fget($conn, $handle, $ftp_file, FTP_ASCII, 0)) {
    $log[] = array('type' => 'error', 'msg' => 'Unable to download data file (' . $ftp_file . ') from ftp.');
    email_fatal_error(); exit();
} else {            
    $log[] = array('type' => 'success', 'msg' => 'File downloaded.');            
}

我知道我可以转换php warings,但我只是想知道“正确”的方式来做到这一点。任何时候你收到警告我觉得它可以解决。

2 个答案:

答案 0 :(得分:4)

在使用ftp_fget函数之前,您应首先检查文件是否确实存在。

您可以查看file_exists

if(file_exists($ftp_file))
{
  //do the stuff with ftp_fget
}

答案 1 :(得分:2)

如果您真的不关心使用@字符的错误,则可以内联错误。这仅适用于默认处理程序,其他记录程序仍将记录错误。

示例:

@ftp_fget(...)
即使可能发生错误,

也不会抛出任何错误或警告。这里有关于此行为的SO帖子非常好: Suppress error with @ operator in PHP