Як виправити помилку HTTP під час завантаження зображень?


28

Я використовую WordPress 3.4.1 на Ubuntu 12.04 за допомогою Apache та PHP 5.3.X

Коли я ввійду на інформаційну панель і додаю нову публікацію. Потім спробуйте завантажити зображення для встановлення обраного зображення, я отримаю червоне поле з повідомленням "Помилка HTTP".

Я читав про людей, які говорять, що не використовувати флеш-завантажувач, а просто використовувати завантажувач веб-переглядачів, але коли я намагаюся це, я просто отримую 500 внутрішніх помилок сервера.

Я спробував додати AddType x-mapp-php5 .phpу верхній частині мого файлу .htaccess, без удачі в зміні.

Вимкнення ВСІХ плагінів не вплинуло. Я спробував свіжу установку. Не вдалося.

Оновлення 17.10.2016 - Якщо ви використовуєте власні ролі чи можливості, будь ласка, спробуйте скористатись власною роллю та можливостями та повторіть спробу.

Речі, які слід врахувати:

  • Право власності на файл
  • Дозволи файлів
  • .htaccess конфігурація
  • PHP версії 7+
  • Поточна версія WordPress

Якщо ви працюєте за проксі-сервером, не забудьте правильно настроїти тайм-аути проксі-сервера.

WordPress 3.4.1 Помилка завантаження медіа HTTP


Які міркування позаду AddType x-mapp-php5 .php? Здається, це дуже специфічно для сервера. Я думаю, що швидше зламати ваш сайт (тобто PHP) жахливо (або нічого не робити, якщо пощастить), а не щось покращити?
MrWhite

Відповіді:


25

Я вкладаю наступний код у свій 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" бібліотеки - це виправлення.


Краще створити невеликий плагін, ніж ставити його в functions.php, тому що якщо змінити тему, ви втратите код. І я впевнений, що ви хочете, щоб це працювало після зміни теми 😊
EliasNS

1
+1 Це працювало для мене, коли я працював над цією проблемою із встановленою програмою WP 4.9.4 на новому рахунку HostGator. @EliasNS noob тут; який правильний спосіб зробити невеликий плагін для цього?
Ендрю Янке

@AndrewJanke, ви можете використовувати плагін 😅 es.wordpress.org/plugins/pluginception
EliasNS

"Імагік" ? Не "ImageMagick" ?
Пітер Мортенсен

21

Після усунення несправностей з @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 Uploader, 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 ), щоб отримати інші можливі ідеї та рішення з усунення несправностей.


гаразд ... добре знати ... ти читав, що WP намагається виділити до 256 Мб оперативної пам'яті, тому це define('WP_MEMORY_LIMIT', '64MB');повинно бути більше, якщо це можливо.
Демієн

1
Якщо ви використовуєте WP 4.1.1, AddType x-mapp-php5 .phpце рішення вже не є життєздатним рішенням, оскільки воно змушує сторінку просто надрукувати код PHP у вигляді простого тексту
cameronjonesweb

1
Або додайте це до конфігураційного файлу своїх сайтів, якщо ви використовуєте nginx:client_max_body_size 128m;
Flatron

4

Я зіткнувся з тією ж помилкою, коли намагався завантажити медіа у wordpress. У Chrome він відображається як http: помилка; У Firefox помилка виглядає зовсім інакше. В Інтернеті є повні історії людей, які витратили дні, щоб переслідувати помилку (так я :-(). Рішень вдосталь, але ніхто не пояснює, чому, принаймні, не так, що відповідає симптомам.

Мій внесок, гідний внеску: я помітив, що проблема корелює з помилкою сегментації, про яку йдеться у файлі журналу apache2. Це мене турбує, бо важко діагностувати.

Перезавантаження всього сервера знімало всі симптоми і раптом я знову міг завантажувати засоби масової інформації в Wordpress. Розчаровуючи, я не маю поняття, чому це відбувається. Перезавантаження фактично зупинило мене від будь-яких подальших досліджень, і мені доведеться чекати (тижні? Місяці?), Щоб проблема знову з’явилася. Я сподіваюся, що це допоможе іншим у їхніх пошуках причини цієї проблеми. Моя дружина щаслива, тому що я більше не можу проводити ночі, переслідуючи цю проблему ...


1

Цю проблему я вирішив, змінивши власника rootна apacheвказаний нижче.

chown -R apache:apache /var/www/html/mydomain

І тоді я змінив дозвіл wp-content/uploads/на 775.

Після цього я спробував завантажити зображення в ЗМІ. Мені вдалося завантажити зображення.


0

У мене було те саме питання. Я спробував різні виправлення, включаючи зміну процесора зображень за замовчуванням з PHP GD на ImageMagick за допомогою модуля Force Image Magick

Це допомогло з помилкою HTTP / помилкою 500, але ескізи більше не створювалися. Потім я знову відключив плагін, і тоді мені допомогла ця відповідь на запитання. Схоже, розмір зображення не працює добре . Мій PHP_MEMORY_LIMITбув встановлений, 160MBякий є абсолютним максимумом, який мій хостер дозволяє.

Для завантаження зображень це призвело до максимально можливих розмірів зображення навколо 6000 x 6000 pxпри використанні PHP GD та генерації ескізів. Тому важливо перевірити не лише розмір файлу, а й розміри зображення. Завантаження зображення з більшими розмірами призвело до помилки / помилки HTTP 500 навіть при невеликих розмірах файлів.


0

Я багато разів стикався з такою проблемою і вирішувався, збільшуючи memory_limit = 256Mphp.ini АБО додаючи define( 'WP_MEMORY_LIMIT', '256M' );у wp-config.phpфайл (* Якщо потрібно, ви можете збільшити пам'ять більше 256M) більшу частину часу.

Іншим можливим рішенням може бути надання дозволу на \wp-content\uploads\папку; Команда: chmod -R 0755 wp-content\uploads\.

Сподіваємось, це теж може допомогти вам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.