it-swarm-eu.dev

Nahrávání obrázků do více stránek způsobuje chybu HTTP

Jen abych vás naplnil mou situací.

Spuštění aplikace WordPress více stránek: 3.5.2 čistá instalace.

Zero 3rd party pluginy. Všechny moje pluginy byly pro ladění zakázány.

Použití WordPress MU mapování domén pro více různých TLD v síti.

Také jsem spoofed všechny síťové adresy URL, aby sloužil soubor z mého lokálního serveru, spíše než stávající živé sítě.

Soubor hostitelů: vi /etc/hosts/

Může obsahovat něco jako:

127.0.0.1 domain-a.com
127.0.0.1 www.domain-a.com
127.0.0.1 domain-b.com
127.0.0.1 www.domain-b.com

pro každou stránku v síti atd.

Udělal jsem to, takže nemusím měnit adresy URL stránek a to, co máte.


Všechno na každé síti funguje podle plánu. Jediným problémem je nahrávání příloh médií. Z jakéhokoli důvodu nejsou správně nahrávány. Uživatel je plnohodnotná role administrátora, takže nemůže mít související oprávnění.

Momentálně běží Ubuntu 12.04 s PHP 5.4.6 (FAST-CGI).

Při nahrávání obrázku dostanu od WordPressu velmi obecnou chybu.

Error 40 Year Old … to Life.jpg HTTP error.

Error 40 Year Old … to Life.jpg HTTP error.

Po přepnutí PHP z FAST-CGI na MOD-PHP jsem obdržel o něco konkrétnější odpověď od WordPressu.

Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.

Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.

Zaškrtl jsem adresář: ./wp-content/uploads/sites/3/2013/ a automaticky není vytvořeno žádné /07/. Tak jsem se pokusil ručně vytvořit a nahrát znovu z obou FAST-CGI a MOD-PHP, stále stejné chyby následovat.

Podíval jsem se na něco jako: ./wp-admin/network/site-settings.php?id=3 v řídicím panelu síťového administrátora, hledající možnosti týkající se médií.

Uploads Use Yearmonth Folders => true
Upload Path => '' //blank
Upload Url Path => '' //blank

Zkontroloval jsem živou multi-site síť spolu s dalšími multi-site instalacemi a zdá se, že mají stejná nastavení.

Pak jsem si začal myslet, že to může být .htaccess.

Když jdu do Network Admin -> Settings -> Network Setup

Říká mi, abych použil:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Což je to, co jsem používal, kromě nepatrné modifikace na začátku (Ihned následující RewriteEngine On) umožňující non-www adresy URL přesměrovat na www adresy URL.

Příklad:

# DOMAIN-A Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-a.com
RewriteRule ^(.*)$ http://www.domain-a.com/$1 [R=301,L]

# DOMAIN-B Redirect non-www urls to www
RewriteCond %{HTTP_Host} ^domain-b.com
RewriteRule ^(.*)$ http://www.domain-b.com/$1 [R=301,L]

Nicméně, tato pravidla nejsou stejná jako WordPress Codex vysvětluje . Zkoušel jsem doporučení podle WordPress Codex, stále bez štěstí na upload obrázků v mé WordPress Multi-Site Network.

V současné době mám SUBDOMAIN_INSTALL nastaveno na true, pomocí příslušných pravidel přepisu podle Kodexu WordPress. Také jsem se pokusil nastavit SUBDOMAIN_INSTALL na hodnotu false, opět pomocí příslušných pravidel přepisu. Ani problém nebyl napraven.

Nainstalovaná živá síť (verze: 3.5.2) také zastavila ukládání obrázků.

Nejsem dost zkušený s multi-site vědět, co by mohlo být příčinou tohoto problému. Budu pokračovat ve vyšetřování, pokud někdo jiný nebude mít představu, jak tento problém vyřešit, sdílejte své získané znalosti!

Upozorňujeme, že 100% není problém s pamětí. Nebude ani nahrát 1kb obrazový soubor.

Snažil jsem se všechny možné řešení, jak je uvedeno v Jak opravit HTTP Chyba při nahrávání obrázků? a stále žádné štěstí, že by to fungovalo.

Použití Dashboard -> Media -> Add New -> browser uploader namísto multi-file uploader, výsledky a Internal Server error.

Z jakéhokoliv důvodu jsem schopen neustále nahrávat tento náhodný konkrétní obrázek bez jakýchkoli problémů, ale jakýkoli jiný obrázek, který se pokouším nahrát, selže ... dokonce i obrázky velikosti 1 kb.

media uploader success

Jsem schopen nahrát některé obrázky a ne jiné. Některé obrázky nahrají interní chyby serveru a některé ne. Některé by mohly být 1kb a některé by mohly být 5mb. Absolutně záhadné.

3
Michael Ecklund

Díky @s1lv3r a @GhostToast za jejich užitečné rady v chatu jsem problém našel.

Jak bylo řečeno v mé původní otázce zeptal jsem se výše, uvedl jsem, že jsem testoval jak FAST-CGI, tak MOD-PHP, oba pokračovali v replikaci stejné chyby.

Jako uvedené v chatu jsem testoval na Ubuntu 12.04 a CentOS 5.9 dedikovaných serverech.

Zpráva chatu by @s1lv3r je nakonec ta, která vyvolala i myšlenku testování PHP-FPM ... a podívali byste se na to? PHP-FPM vyřešilo záhadu!

Mnohokrát jsem testoval jak Ubuntu 12.04, tak CentOS 5.9 spolu s povolenými pluginy, s povolenými pluginy, s aktivovaným motivem akcií as povoleným vlastním motivem. Je to určitě nahrál každý obraz, ať už malý nebo velký - bez chyby.

Takže ještě jednou v případě, že jste to nezachytili dřív. Pokud máte podobné příznaky s WordPress multi-site. Zkuste povolit PHP-FPM na vašem serveru, nebo jako uvedené v chatu by @s1lv3r Pokud používáte FAST-CGI, můžete zkusit chmodding adresáře vašich uploadů na 777.

Povolení PHP-FPM vyřešilo tento konkrétní problém s WordPress multi-site způsobující chybu HTTP při nahrání obrázku.


BoF EDIT 10/20/2016

Pokud se vám chyby HTTP s WordPress Multisite, zvažte způsob, jakým je instalace nakonfigurována.

WordPress Multisite má dvě možnosti:

  1. Instalace podadresáře
  2. Instalace subdomény

Vedl jsem síť lokalit, které využívají TLD na instalaci podadresáře. Pracovali navždy dobře. Najednou začali při nahrávání souborů s chybou HTTP chybovat.

Problém se děje pouze v aplikaci WordPress a problém je HTTP. Takže je tu něco, na čem WordPress A Apache spoléhali. Jediný společný odkaz je .htaccess.

Pokud se podíváte na WordPress Codex :: .htaccess a Mod Rewrite Pravidla přepisu jsou ve skutečnosti velmi odlišná v závislosti na typu instalace, kterou jste nakonfigurovali pro Multisite.

Nahradil jsem pravidla pro přepsání instalace podadresáře příslušnými pravidly pro přepsání pro instalaci „subdomény“. Pak jsem také aktualizoval wp-config.php pro změnu define('SUBDOMAIN_INSTALL', false); na tuto define('SUBDOMAIN_INSTALL', true);

VÝLOŽNÍK! Problém je vyřešen. Žádné další HTTP Chyba při nahrávání souborů ve WordPress Multisite pomocí TLD pro každé místo v síti.

EoF EDIT 10/20/2016


1
Michael Ecklund