Я использую библиотеку ImageManipulator.php отсюда: https://gist.github.com/philBrown/880506
При загрузке некоторых изображений я получаю следующую ошибку:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Image file C:\inetpub\wwwroot is not readable' in C:\inetpub\wwwroot\libraries\image-library.php:62 Stack trace: #0 C:\inetpub\wwwroot\images\edit-image.php(55): ImageManipulator->setImageFile('C:\inetpub\wwwr...') #1 .{main} thrown in C:\inetpub\wwwroot\libraries\image-library.php on line 62
Ссылка на функцию:
if (!(is_readable($file) && is_file($file))) {
throw new InvalidArgumentException("Image file $file is not readable");
}
Это происходит со случайным выбором изображений, но если это случается, это продолжает происходить с этим изображением, поэтому оно не является полностью случайным. Если я открою изображение в Paint и сохраню его под другим именем, оно будет работать. Это не связано с размером изображения, так как у меня была эта ошибка с изображением размером всего 14 КБ.
У кого-нибудь есть идеи, что не так?
Например:
Изображение выше не работает, но изображение ниже.
Спасибо за вашу помощь, указав мне в правильном направлении. Оказывается, что все файлы, которые потерпели неудачу, имели расширения в верхнем регистре (.JPG), а те, что работали, имели расширение в нижнем регистре (.jpg). Всякий раз, когда я редактировал файл в рисовании, он сохранял его с расширением в нижнем регистре. Где-то в коде я проверял допустимые расширения, используя массив, и массив содержал только строчные расширения. Я добавил strtolower
для сравнения, и, кажется, работает. Решение:
// array of valid extensions
$validExtensions = array('.jpg', '.jpeg', '.gif', '.png');
// get extension of the uploaded file
$fileExtension = strtolower(strrchr($_FILES['fileToUpload']['name'], "."));
^^^^^^^^^
Других решений пока нет …