ftp_fget () возвращает предупреждение о том, что файл не существует ... избегайте предупреждений, не меняя уровень сообщений об ошибках - PullRequest
2 голосов
/ 24 октября 2011

Я подключаюсь к 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 ]

4 голосов
/ 24 октября 2011

Прежде чем использовать функцию ftp_fget, сначала необходимо проверить, существует ли файл.

Вы можете проверить с помощью file_exists

if(file_exists($ftp_file))
{
  //do the stuff with ftp_fget
}
2 голосов
/ 24 октября 2011

Вы можете подавить встроенные ошибки, если вы действительно не заботитесь об ошибке, используя символ @. Это работает только для обработчика по умолчанию, другие регистраторы по-прежнему будут регистрировать ошибку.

Пример:

@ftp_fget(...)

не будет выдавать никаких ошибок или предупреждений, даже если ошибка может возникнуть. Есть действительно хороший SO пост об этом поведении здесь: Подавить ошибку с оператором @ в PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...