Я получаю HTTP Error
сообщение при загрузке большого файла JPG (около 30 — 40 МБ), и я вижу 500 Internal Server Error
ответ на вкладке сети инструментов разработчика Chrome, возвращаемый async-upload.php
,
Ошибка появляется после загрузки файла. Я могу увидеть файл в wp-content/uploads
каталог, поэтому проблема не связана с процессом загрузки.
Я полагаю, что проблема связана с процессом изменения размера изображений, который происходит после загрузки файла. Я попытался восстановить эскизы вручную (используя несколько плагинов регенерации эскизов), чтобы доказать, что проблема связана с процессом изменения размера. Все они не смогли изменить размер большого изображения.
Вещи, которые я сделал до публикации этого вопроса:
php.ini
файл (memory_limit = 256M
)post_max_size = 256M
Я выключил mod_security
настройки:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Я также попытался изменить библиотеку изображений по умолчанию:
add_filter('wp_image_editors', function () {
return ['WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'];
});
ОБНОВИТЬ:
Я только что понял, что фильтр, который я применил, ничего не сделал. Я проверил исходный код WP и обнаружил, что значение по умолчанию для этого фильтра: ['WP_Image_Editor_Imagick', 'WP_Image_Editor_GD']
, Я изменил порядок, но у меня не была установлена библиотека Image Magic, поэтому WordPress все равно использует библиотеку GD.
Поэтому я установил PHP-расширение Image Magic, чтобы попробовать. Я также удалил фильтр, потому что это значение по умолчанию работает для меня.
Замена библиотеки GD на Image Magic решила проблему., но мне все еще любопытно, почему библиотека GD не может обрабатывать такие большие изображения. Есть ли способ решить эту проблему по-другому? Я не хочу зависеть от сторонних библиотек. Я бы предпочел использовать стандартную настройку PHP (в случае развертывания сайта на общем хостинге, где невозможно установить пользовательские расширения PHP).
Если вы обновили версию PHP. Это может привести к тому, что старый плагин сделает это. То же самое случилось со мной. Я обновил php 5.6 до PHP 7, и произошла та же ошибка. Когда я переустановил PHP 5.6, он начал работать нормально.
Это ошибка сервера. Если вы не изменили php.ini или .htacess, попробуйте Загрузить файл PNG. Эти трюки работают на меня!