Как исправить ошибку HTTP При загрузке Изображений?
Я использую WordPress 3.4.1 на Ubuntu 12.04, используя Apache и PHP 5.3.X
Когда я вхожу в панель мониторинга и добавляю новую запись. Затем попробуйте загрузить изображение, чтобы установить его в качестве отличительного изображения, я получаю красное поле с сообщением "Ошибка HTTP".
Я читал о людях, которые советуют не использовать загрузчик flash, а просто использовать загрузчик браузера, но когда я пытаюсь это сделать, я просто получаю 500 внутренних ошибок сервера.
Я попытался добавить AddType x-mapp-php5 .php
в верхней части моего .htaccess файл, без каких-либо изменений.
Отключение ВСЕХ плагинов не возымело никакого эффекта. Я попробовал новую установку. Не повезло.
Обновление 17.10.2016 - Если вы используете пользовательские роли или возможности, пожалуйста, попробуйте использовать собственную роль/возможности и повторите попытку.
Что следует учитывать при проверке:
- Владелец файла
- Права доступа к файлам
- .конфигурация htaccess
- Версия PHP 7+
- Текущая версия WordPress
Если вы работаете за прокси-сервером, убедитесь, что у вас правильно настроены тайм-ауты прокси-сервера.
6 answers
Я поместил следующий код в свой файл functions.php
. Это работает!
add_filter( 'wp_image_editors', 'change_graphic_lib' );
function change_graphic_lib($array) {
return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}
Когда это помогает, это происходит потому, что он изменяет модуль кода PHP, используемый для обработки загруженного изображения для использования с WordPress.
Эта обработка включает перемещение изображения в базу данных библиотеки мультимедиа и создание изображений разного размера ("миниатюра", "средний", "большой"), которые WordPress всегда хочет предоставить для доступа к темам.
Это приводит к использованию модуля "GD", потому что он первый. В некоторых настройках сервера новая библиотека "Imagick" плохо сочетается с другими для определенных сценариев изображения, таких как большие размеры пикселей, поэтому использование библиотеки "GD" является исправлением.
После устранения неполадок с @Wyck в чате мы сузили круг до основной проблемы.
Проблема была связана с тем, что в моей конфигурации сервера не было достаточного объема памяти, выделенного для Apache/PHP.
Если у кого-то есть такая же проблема, пожалуйста, попробуйте проверить, достаточно ли (64 МБ+) памяти сервера, выделенной для Apache/PHP в настройках конфигурации вашего сервера. Вы также можете добавить это в свой wp-config.php файл:
define('WP_MEMORY_LIMIT', '64MB');
Если приведенное выше решение делает не работает, читайте статью Проблемы с загрузчиком изображений/Мультимедиа? для дальнейшего устранения неполадок.
Попробуйте добавить одну за другой или все следующие настройки .htaccess в файл.htaccess в корневом каталоге вашей установки WordPress.
Серьезно, попробуйте одно из приведенных ниже решений, чтобы вы знали, какое из них помогло. Не вставляйте их все сразу в свой файл .htaccess.
Попробуйте следующую строку:
AddType x-mapp-php5 .php
Mod_security может быть вызывающий проблемы. Отключите его, чтобы узнать, в этом ли проблема. Для этого создайте файл .htaccess в каталоге wp-admin. Добавьте к этому следующее:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Если вы используете управление доступом на основе аутентификации на своем веб-сервере (часто известное как htpasswd, базовая аутентификация, каталог, защищенный паролем, или подобное), WordPress не сможет обработать его для загрузчика Flash, Cron и XMLRPC. Для работы необходимо исключить связанные файлы. Имейте в виду, что это может нарушить вашу безопасность соображения.
# Exclude the file upload and WordPress CRON scripts from authentication
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
Последнее замечание: некоторые говорят, что при использовании меньшей версии PHP 5.3.X вы можете попробовать отключить безопасный режим PHP.
Если вы используете WordPress с несколькими сайтами и получаете ошибки HTTP или внутренние ошибки сервера, связанные с загрузкой изображений, пожалуйста, прочитайте Загрузка изображений на несколько сайтов Приводит к ошибке HTTP) для других возможных идей и решений по устранению неполадок.
Я столкнулся с той же ошибкой при попытке загрузить медиа в wordpress. В Chrome это отображается как ошибка http:; в Firefox ошибка выглядит совсем по-другому. В Интернете полно историй о людях, которые потратили дни на поиск ошибки (как и я:-(). Решений предостаточно, но никто не объясняет, почему, по крайней мере, не так, чтобы это соответствовало симптомам.
Мой вклад, достойный двух пенсов: Я заметил, что проблема связана с ошибкой сегментации, о которой сообщается в файле журнала апач2. Это меня беспокоит, потому что это трудно диагностировать.
Перезагрузка всего сервера устранила все симптомы, и внезапно я снова смог загружать мультимедиа в Wordpress. К сожалению, я понятия не имею, почему это происходит. Перезагрузка фактически остановила меня от дальнейших исследований, и теперь мне придется ждать (недели? месяцев?) чтобы проблема снова возникла. Я надеюсь, что это поможет другим в их поисках причины этой проблемы. Однако моя жена счастлива, потому что я не могу дольше проводите ночи в погоне за этой проблемой...
Я решил эту проблему, сменив своего владельца с root
на apache
, как показано ниже.
chown -R apache:apache /var/www/html/mydomain
И затем я изменил разрешение wp-content/uploads/
на 775
.
После этого я попытался загрузить изображение в СМИ. Мне удалось загрузить изображение.
У меня была та же проблема. Я пробовал различные исправления, включая изменение процессора изображений по умолчанию с PHP GD на ImageMagick с помощью плагина Force Image Magick
Это помогло с ошибкой HTTP/ошибкой 500, но миниатюры больше не создавались. Затем я снова деактивировал плагин, и тогда мне помог этот ответ на вопрос Похоже, что изменение размера изображения плохо работает. Мой PHP_MEMORY_LIMIT
был установлен в 160MB
, что является абсолютным максимумом мой хостер позволяет.
Для загрузки изображений это привело к максимально возможным размерам изображения около 6000 x 6000 px
при использовании PHP GD и создании эскизов. Поэтому важно проверять не только размер файла, но и размеры изображения. Загрузка изображения с большими размерами привела к ошибке HTTP/ошибке 500 даже при небольших размерах файлов.
Я сталкивался с такой проблемой много раз и решал ее, увеличивая memory_limit = 256M
в php.ini ИЛИ добавляя define( 'WP_MEMORY_LIMIT', '256M' );
в файл wp-config.php
(*При необходимости вы можете увеличить объем памяти больше, чем 256M
) большую часть времени.
Другим возможным решением может быть предоставление разрешения \wp-content\uploads\
папке; команда: chmod -R 0755 wp-content\uploads\
.
Надеюсь, это тоже поможет вам.