asd.jpg не является допустимым файлом JPEG — Переполнение стека Scandir

У меня есть программное обеспечение, которое загружает каждую минуту в формате JPEG в FTP учетная запись.

В PHP я делаю небольшой код PHP в crontab, который берет последний файл JPEG и выполняет обработку графики. Это отлично работает.

$all_files = scandir("./dir/dir",1);
$last_files = $all_files[0]; //take last jpeg
..etc..

Проблема в том, что иногда PHP-код в crontab берет файл, который все еще пишется по FTP (поэтому он неполный), и генерирует эту ошибку:

[01-Jun-2016 15:30:05 Europe/Rome] PHP Warning:  imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file in /home/asdasd/public_html/www.asdasdasdasd.com/asd/asd/cron.php on line 15
[01-Jun-2016 15:30:05 Europe/Rome] PHP Warning:  imagecreatefromjpeg(): './dir/dir/153000.jpg' is not a valid JPEG file in /home/asdasd/public_html/www.asdasdasdasd.com/asd/asd/cron.php on line 15
[01-Jun-2016 15:30:05 Europe/Rome] PHP Warning:  imagecopyresampled() expects parameter 2 to be resource, boolean given in /home/asdasd/public_html/www.asdasdasdasd.com/asd/asd/cron.php on line 17

Как добавить проверку для scandir, чтобы перехватить последний полный файл и не быть записанным?

3

Решение

Вы можете просто проверить файл JPEG, если он действителен, перед его обработкой (cron.php):

if(exif_imagetype($filepath) != IMAGETYPE_JPEG){
// Exit the script
exit;
}

// Your image processing code goes here...

http://php.net/manual/en/function.exif-imagetype.php

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]