Ответ 1
Как вы сказали, если используется в несуществующем файле, getimagesize генерирует предупреждение:
Этот код:
if ($data = getimagesize('not-existing.png')) {
echo "OK";
} else {
echo "NOT OK";
}
вы получите
Warning: getimagesize(not-existing.png) [function.getimagesize]:
failed to open stream: No such file or directory
Решением было бы использовать @operator, чтобы замаскировать эту ошибку:
if ($data = @getimagesize('not-existing.png')) {
echo "OK";
} else {
echo "NOT OK";
}
Поскольку файл не существует, данные $будут по-прежнему ложными; но предупреждение не будет отображаться.
Другое решение - проверить, существует ли файл, перед использованием getimagesize; что-то вроде этого:
if (file_exists('not-existing.png') &&
($data = getimagesize('not-existing.png'))
) {
echo "OK";
} else {
echo "NOT OK";
}
Если файл не существует, getimagesize не вызывается - что означает отсутствие предупреждения
Тем не менее, это решение не та, которую вы должны использовать для изображений, которые находятся на другом сервере, и доступ через HTTP (если вы в этом случае), так как это будет означать два запроса на удаленный сервер.
Для локальных изображений, я думаю, это было бы вполне нормально; только проблема, которую я вижу, - это уведомление, генерируемое при отсутствии ошибки чтения.
Наконец:
- Я бы допустил, чтобы ошибки отображались на вашем сервере разработки,
- И не будет отображаться на вашем рабочем сервере - см.
display_errors
, о котором: -)