Я получаю сообщение HTTP Error
при загрузке большого файла jpg (около 30-40 МБ), и я могу видеть ответ 500 Internal Server Error
в Chrome dev tool network, возвращенный async-upload.php
.WordPress async-upload.php возвращает 500 (Internal Server Error) после загрузки большого JPG-файла
Ошибка появляется после загрузки файла. Я вижу файл в каталоге wp-content/uploads
, поэтому проблема не связана с процессом загрузки.
Я полагаю, что проблема связана с процессом изменения размера изображения, который происходит после загрузки файла. Я попытался вручную восстановить эскизы (используя несколько регенерирующих миниатюрных плагинов), чтобы доказать, что проблема связана с процессом изменения размера. Все они не смогли изменить размер большого изображения.
Вещи, которые я сделал, прежде чем отправлять на этот вопрос:
- Я увеличил лимит памяти до 256 Мб в файле
php.ini
(memory_limit = 256M
) - набор
post_max_size = 256M
- Настройка экземпляра свежий WP. Нет плагинов, тема по умолчанию.
- Испытано на другой машине (на VPS, те же настройки PHP)
Я выключил
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']; });
UPDATE:
Я только что понял, что фильтр, который я применил, ничего не сделал. Я проверил исходный код WP и нашел, что значение по умолчанию для этого фильтра: ['WP_Image_Editor_Imagick', 'WP_Image_Editor_GD']
. Я изменил порядок, но у меня не было библиотеки Magic Magic, поэтому WordPress все равно использует библиотеку GD.
Таким образом, я установил расширение Magic Magic, чтобы дать ему попробовать. Я также удалил фильтр, потому что это значение по умолчанию работает для меня.
Замена библиотеки GD с помощью Image Magic решила проблему., но мне все еще интересно, почему библиотека GD не может обрабатывать такие большие изображения. Есть ли способ решить эту проблему по-другому? Я не хочу быть зависимым от сторонних библиотек. Я бы предпочел использовать стандартную настройку PHP (в случае развертывания сайта на общем хостинге, где невозможно установить собственные расширения PHP).
Проверьте свои ошибки на наличие ошибок.Потенциальным кандидатом является то, что у PHP закончилась нехватка памяти. – Halcyon
Боюсь, это не проблема с памятью. Я даже пытался увеличить лимит памяти до 512. В журнале ошибок ничего нет. Я проверяю оба файла: Apache и PHP. Я только что обновил свой предыдущий пост. Я нашел обходное решение - помог помочь замена библиотеки GD с помощью Image Magick. – wube
Это ничего не доказывает, возможно, требуется GD 513mb. Проверьте журнал ошибок, и вы точно знаете, что произошло. – Halcyon