Поддержка svg логотипов была введена с версии 4.15.1, сейчас же снова идет ошибка при загрузке svg лого:
Ошибка Файлы с расширением .svg не могут быть загружены.
Это баг или целенаправленный откат? Очень мешает, потому что все наши логотипы смотрятся хорошо только в формате SVG
** ОБНОВЛЕНО: Проблема решается в конфиг файле **
@AlexBern Подскажите пожалуйста, решили проблему как?
У меня 4.18.1 стоят логотипы в svg формате, создал новый макет т.к АВ выпустили новые макеты 10ult, так вот, на одном макете стоят svg а в новый макет не могу загрузить, пишет: Ошибка Файлы с расширением .svg не могут быть загружены.
@ikoshkin @Asya @Tanya о таких вещах следует предупреждать в документации, вы проверили вообще воспроизвели проблему? Уже больше месяца прошло как человек написал пост, тишина…
У меня даже с модулем Add-ons :: Content (galleries, look) :: Logo in SVG от @makeshop.pro не грузится лого в svg, пишет Файлы с расширением .svg не могут быть загружены. @ikoshkin @Asya на 4.17.2 спокойно грузится, а на 4.18.1 не дает.
Видимо надо что-то гадкое написать чтобы отреагировали
Или написать на НЕрусскоязычном форуме т.к там @cs-cart_team жжет ответами, а тут нужно вытягивать, заходят все по 4-5 раза в день и хоть бы один ответил! Хочу сказать так я вам мои сладкие Голосовое сообщение
1ч23м59с
Здравствуйте, @AlexBern и @ARTUR
Спасибо за ваше сообщение.
В версии 4.18.1 наши разработчики убрали формат SVG из допустимых форматов для загрузки изображений из соображений безопасности: в файле .svg может быть JavaScript.
К сожалению, информация об этом изменении по ошибке не попала в новость о выпуске версии 4.18.1 и в changelog. Приносим свои извинения за доставленные неудобства.
Если вы хотите и дальше пользоваться форматом SVG, вы можете внести следующие изменения в файл config.php вашей установки:
- Убрать строку
'svg',
из
// List of forbidden file extensions (for uploaded files)$config['forbidden_file_extensions'] = array ( 'php', 'php3', 'pl', 'com', 'exe', 'bat', 'cgi', 'htaccess', 'svg',);
- Убрать строку
'image/svg+xml',
из
$config['forbidden_mime_types'] = array ( 'text/x-php', 'text/x-perl', 'text/x-python', 'text/x-shellscript', 'application/x-executable', 'application/x-ms-dos-executable', 'application/x-cgi', 'application/x-extension-htaccess', 'application/x-msdownload', 'image/svg+xml',);
- Добавить строку
'svg',
в
$config['allowed_image_extensions'] = [ 'jpg', 'jpeg', 'png', 'gif', 'ico', 'webp',];
Также в файл /app/Tygh/Tools/ImageHelper.php нужно добавить следующий код:
if ($object_type === 'logos') {
if (!in_array('svg', $supported_formats)) {
$supported_formats[] = 'svg';
}
} elseif (in_array('svg', $supported_formats)) {
$supported_formats = array_filter($supported_formats, static function ($supported_format) {
return $supported_format !== 'svg';
});
}
после
public static function getSupportedFormats($object_type = 'all')
{
$imagine = Tygh::$app['image'];
$supported_formats = array();
if ($imagine instanceof \Imagine\Imagick\Imagine) {
$imagick = new \Imagick();
$supported_formats = array_uintersect(Registry::get('config.allowed_image_extensions'), $imagick->queryFormats(), 'strcasecmp');
$supported_formats = array_map('strtolower', $supported_formats);
$imagick->clear();
$imagick->destroy();
unset($imagick);
} elseif ($imagine instanceof \Imagine\Gd\Imagine) {
$gd_formats = imagetypes();
if ($gd_formats & IMG_JPEG) {
$supported_formats[] = 'jpg';
$supported_formats[] = 'jpeg';
}
if ($gd_formats & IMG_PNG) {
$supported_formats[] = 'png';
}
if ($gd_formats & IMG_GIF) {
$supported_formats[] = 'gif';
}
// phpcs:ignore
if (defined('IMG_WEBP') && ($gd_formats & IMG_WEBP)) {
$supported_formats[] = 'webp';
}
$supported_formats[] = 'ico';
}
Чтобы не изменять файлы ядра, вы можете добавить поддержку svg через хук image_helper_get_supported_formats_post
.