Intereting Posts
Может ли WordPress читать собственный RSS-канал? Meta Tag "описание" Поиск лучшего способа обработки сценария ajax, который извлекает данные после нажатия на клик Woocommerce – Как смешивать продукты и сообщения на целевой странице? Как преобразовать аргумент wp_list_pages в массив Как я могу эмулировать поведение постоянных ссылок на статических страницах Пустые «термины» в «tax_query» возвращают пустой массив meta_query exlude, где meta_key DeletedDate старше, чем .current-menu-item класс на пользовательских страницах типа сообщений – снова? Резервирование листинга Как WordPress обновляет плагины, не сталкиваясь с проблемами с разрешениями? Как получить идентификатор изображений, используемых в галерее? Пользовательский запрос пользователя – orderby meta_key (возможно, не существует) Пользовательский загрузчик мультимедиа, не показывающий библиотеку Максимальная длина meta_value

Настроить максимальный предел размера загрузки изображения

Клиенты загружают изображения huuuge, а затем жалуются, что на сервере заканчивается память.

Конечно, можно было бы увеличить объем памяти, но это только вводит гонку вооружений.

Какие крючки можно добавить, чтобы наложить максимальный размер изображения (размеры, а не файлы) на загруженные файлы, например Нет, вы не можете загрузить этот 8-мегапиксельный снимок, сначала измените его размер до <2 мегапикселей.

Чтобы быть ясным, я говорю о размере изображения, а не о размере файла, aka Высота изображения и Ширина изображения

Solutions Collecting From Web of "Настроить максимальный предел размера загрузки изображения"

В основном вы просто извлекаете информацию через getimagesize() , базовую функцию PHP, а затем обрабатываете свои ошибки с помощью заметок.

Плагин

Основной плагин в качестве отправной точки:

 <?php /** Plugin Name: (#67107) »kaiser« Restrict file upload via image dimensions */ function wpse67107_restrict_upload( $file ) { $file_data = getimagesize( $file ); // Handle cases where we can't get any info: if ( ! $file_data ) return $file; list( $width, $height, $type, $hwstring, $mime, $rgb_r_cmyk, $bit ) = $file_data; // Add conditions when to abort if ( 3200728 < $width * $height ) { // I added 100k as sometimes, there are more rows/columns // than visible pixels, depending on the format $file['error'] = 'This image is too large, resize it prior to uploading, ideally below 3.2MP or 2048x1536 px.'; } return $file; } add_filter( 'wp_handle_upload_prefilter', 'wpse67107_restrict_upload' ); 

Вот мое занятие

 <?php /** * Plugin Name: Deny Giant Image Uploads * Description: Prevents Uploads of images greater than 3.2MP */ function tomjn_deny_giant_images($file){ $type = explode('/',$file['type']); if($type[0] == 'image'){ list( $width, $height, $imagetype, $hwstring, $mime, $rgb_r_cmyk, $bit ) = getimagesize( $file['tmp_name'] ); if($width * $height > 3200728){ // I added 100,000 as sometimes there are more rows/columns than visible pixels depending on the format $file['error'] = 'This image is too large, resize it prior to uploading, ideally below 3.2MP or 2048x1536'; } } return $file; } add_filter('wp_handle_upload_prefilter','tomjn_deny_giant_images'); 

Я понимаю, что вам нужно только отказаться от загрузок на основе Image Dimension . Но я просто хочу добавить заметку, это не помешает вашему серверу получить Out of Memory . Image dimensions доступны после полной загрузки данных на сервере (например, Apache), и, следовательно, память сервера потребляется.

Вы должны ограничить размер загрузки на уровне Apache и PHP, а затем, если хотите, вы можете также ограничить уровень WordPress для параметра «Размер изображения». Чтобы установить максимальный размер загрузки в Apache,

 <Directory "/var/www/wordpress-site/wp-uploads"> LimitRequestBody 10485760 </Directory> 

В php.ini установите:

 memory_limit = 64M upload_max_filesize = 10M post_max_size = 20M