Co je internetový obchod. E-commerce je výklenek pro podnikání. Obchodní platformy pro schéma mezi podniky

Mám zapnutý WP 3.0.1 sdílený hostitel pomocí PHP5. Mám potíže s nahráváním souborů, které jsou o něco větší, prostřednictvím nástroje pro nahrávání médií v sekci správce WP.

Pokaždé, když se pokusím stáhnout soubor větší než pár megabajtů, načte se, řekne, že to skřípe, a pak se mi zobrazí velká červená „chyba HTTP“. - nic víc.

To se děje pouze u souborů, které jsou o něco větší, tj. soubor o velikosti 20 MB. Zdá se, že soubor o velikosti 5 MB funguje dobře. Zvláštní je, že v minulosti jsme stahovali 40 MB soubory bez problémů.

Zde jsou kroky, které jsem dosud podnikl, abych se pokusil situaci napravit:

  • Dvojitá kontrola php.ini pro zvýšení načítání, publikování a využití paměti byly dostatečně vysoké.
  • Aktualizován .htaccess, aby obsahoval filtr, který jsem našel jinde.
  • Dvakrát zkontroloval všechna oprávnění souborů přes ftp, aby se ujistil, že jsou 755.
  • Hostitelský hovor – „Nepodporují skripty třetích stran“ (nesnáším IPower)
  • Vyzkoušeno s různými zvukovými soubory podobné velikosti.
  • Zakázat všechny pluginy

Máte nějaké další nápady, co by mohlo způsobovat nespecifikovanou "chybu HTTP". problém?

předem děkuji.

10 odpovědí

Problém, jak jste již zjistili, souvisí s velikostí nahrávaného souboru. Dovolte mi připomenout, že HTTP není určen k přenosu velké soubory...umí to, ale ne vždy a ne moc dobře. Máte problém, kdy váš hostitel zakazuje přenos, protože soubor je příliš velký. S největší pravděpodobností se jedná o server, kam nemáte přístup.

Vzhledem k tomu, že „nepodporují skripty třetích stran“, předpokládám, že jste ve společném hostovaném prostředí, takže pokud nic neuděláte, může se na vašem serveru něco změnit. Možná řešení:

Měl jsem podobný problém s Nginx a PHP5-FPM (a WordPress 4.1).

Příznaky: soubor (< 5MB, так относительно небольшой) частично передается через передачу, как указано индикатором выполнения, когда вы получаете сообщение об ошибке HTTP.

I když jste nastavili upload_max_filesize ve vašem php.ini, měli byste také zkontrolovat post_max_size jako minimum. Nezapomeňte restartovat php5-fpm.

Pokud to stále nefunguje, upravte soubor nginx.conf (v Debian/Ubuntu it/etc/nginx/nginx.conf) a přidejte jej do bloku http:

Client_max_body_velikost 100m;

Poté restartujte Nginx.

Jeden z našich klientů měl stejný problém.

Nakonec jsme zjistili, že "chyba HTTP" wordpressu při načítání obrázků byla způsobena změnou na straně serveru. Hostingová společnost se rozhodla přidat na server akceleraci APC, aby zlepšila stabilitu a rychlost serveru. Akcelerace APC by měla fungovat pouze s FastCGI, ne su, takže instalují PHP jako FastCGI.

Na pomocí PHP jako FastCGI, pokud se pokusíte nahrát soubor větší než 128 kB, dojde k chybě „mod_fcgid: délka požadavku HTTP 131388 (zatím) překračuje MaxRequestLen (131072)“ a způsobí chybu interní server 550. K tomu dochází, protože výchozí hodnota direktivy MaxRequestLen je nastavena na 131072 bajtů (128 kB). Jedním ze způsobů, jak to opravit (pokud server používá Plesk), je upravit /etc/httpd/conf.d/fcgid.conf a nastavit MaxRequestLen na více vysoká hodnota, například 15 MB (MaxRequestLen 15728640). Pokud server používá cPanel, lze tuto změnu provést prostřednictvím WHM serveru.

Pokud tedy můžete nahrát obrázky až do velikosti 128 kB, je to řešení vašeho problému.

Pro budoucí čtenáře se po náročném dni hledání právě podařilo najít řešení.

V souboru fcgid.conf je parametr (pro mě v /etc/apache 2/mods-enabled): FcgidMaxRequestLen . Viz https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestlen

Nastavím vhodnou délku v bajtech a vše funguje. Zdá se, že Apache změnil své myšlení na výchozí hodnotu (která je nyní 131072 bajtů):

Před verzí 2.3.6 je tato výchozí hodnota 1 GB. Většina uživatelů je více než dřívější verze měli použít tuto směrnici ke stanovení rozumnějšího limitu.

Měl jsem stejný problém při pokusu o nahrání média, až na to, že u souborů větších než 124 kB se objevila „chyba HTTP“! WP 3.3.1, PHP 5.2.

Zavolal jsem svému hostiteli a oni zvýšili paměť na 64 M (také to změnili v wp-config) a upload_limit na 8 MB (výchozí byly 2 MB). To nefungovalo, takže jsem se uchýlil k téměř všemu ostatnímu, od pohrávání si s .htaccess přes přeinstalaci WP až po instalaci nového WP na jiný server, ale vše ukazovalo na problém se serverem. Znovu jsem zavolal majiteli a mluvil s dalším specialistou, který zvýšil platné nastavení Délka požadavku HTTP.

Vyzkoušel jsem všechny běžně navrhované změny php.ini i změny wp-config bez úspěchu. Nakonec jsem zjistil, že někdo navrhuje zobrazit informace o async-upload.php XHR v mém prohlížeči a zjistil jsem, že z nějakého důvodu náš firewall označuje nahrávání jako trojský kůň (MalAgent.H_9218). Takže se tam určitě podívejte, může to identifikovat i ostatní možné problémy s nakládáním.

Výskyt chyby „chyba HTTP“ při práci ve WordPressu může být způsoben řadou důvodů. Uvedu pouze ty, se kterými jsem se sám setkal, a ty efektivní řešení které byly mnou testovány. Nebudu žvýkat všechno ve formě podrobný manuál pro úplně nové webmastery. Počítám s připravenějším čtenářem i se sebou samým, pro kterého vydávám tuto sérii příspěvků na administraci WordPressu jako poznámkový blok pro případ, že by mě náhle navštívila skleróza.) Síť je plná specializovaných zdrojů, kde vám bude vše podrobně vysvětleno a podrobně popsány. Takový úkol jsem si nedal. Tak…

Ve své praxi jsem zvyklý používat Linux v podobě Centos as systémová platforma váš webový server, takže zadané cesty a adresáře pro umístění konfiguračních souborů platí konkrétně pro tento systém. Neváhám změnit nastavení prostřednictvím ovládacího panelu serveru správce ISP, který aktivně používám.

Za prvé, když k takové chybě dojde, bylo by nejrozumnější podívat se na protokol chyb webového serveru. Hledáme nové řádky, které zmiňují PUT, GET a požadavky POST a pozorně si je přečtěte. Zpravidla se tím udává směr, kterým hledat řešení.

Většina běžné důvody Chyby HTTP (je možná i jejich kombinace)…

Rozlišení nahrané fotografie je vyšší, než je povoleno

Na vlastní zkušenost Všiml jsem si, že může dojít k chybě, pokud šířka nahrané fotografie překročí hodnotu určenou jako šířka pro formát obrázku „Velká velikost“ v „Nastavení - Soubory médií“. Změňte ho na menší a vyzkoušejte. Osobně jsem zvolil maximální dostatečnou velikost pro zveřejněné fotografie - 1280x720px. Pokud používáte svůj WordPress pro tvorbu portfolia fotografií, pak musíte vycházet z vlastních požadavků na kvalitu publikovaného fotografického materiálu.

Pamatujte prosím, že vytváření kopií obrázků v různá rozlišení dojde během fáze stahování souboru. Proto při změně přednastavených velikostí používejte pluginy pro regeneraci miniatur (znovuvytváření miniatur).

Možná v mé praxi tento důvod vznik http chyba nebyl jediný, ale šel spolu se slavnějšími a známějšími.

Velikost nahraného souboru je větší, než je povoleno v nastavení PHP

Standardní příběh. Řešení je zde mnoho...

Pokud vám hosting umožňuje provádět změny v php.ini, pak v něm vyhledejte dvě direktivy a změňte jejich hodnotu na vhodnou, například 32MB:

Upload_max_filesize = 32 milionů post_max_size = 32 milionů

Druhý parametr definuje maximální velikost Požadavky POST, které musí být stejné nebo větší než maximální velikost souboru.

Nezapomeňte restartovat webový server Apache přes panel nebo SSH příkazem:

restart služby httpd

Pokud nemáte přístup k php.ini, pokusíme se zaregistrovat totéž prostřednictvím .htaccess v kořenovém adresáři vašeho WordPress:

Php_value upload_max_filesize 32M php_value post_max_size 32M

Pokud používáte Apache jako webový server a Nginx, pak pokud si pamatuji, nginx nerozumí .htaccess, ale změňte Nastavení PHP je to možné prostřednictvím konfiguračního souboru nginx.conf. Pokud je PHP nakonfigurováno jako klient FastCGI, provede se to pomocí direktivy fastcgi_param:

Fastcgi_param PHP_VALUE upload_max_filesize=32M; fastcgi_param PHP_VALUE post_max_size=32M;

Bylo by také dobré zkontrolovat hodnotu direktivy nginx client_max_body_size, která je zodpovědná za maximální velikost dat přenášených do HTTP požadavky. Ovlivňuje také maximální velikost nahrávaných souborů. Nesmí být menší než výše uvedené parametry.

Po provedení změn v konfiguraci nezapomeňte soubory nginx nebo Apache restartujte službu přes ovládací panel nebo přes SSH s příkazy jako:

služba nginx restart service httpd restart

Dobře poslední možnost— zkuste rozšířit možnosti PHP přímo z vašeho konfiguračního souboru WordPress pomocí funkce ini_set():

Ini_set("max_velikost_nahrani", "32M"); ini_set("post_max_size", "32M");

WordPress má speciální filtr upload_size_limit používaný ve funkci wp_max_upload_size().

Tento filtr je zodpovědný za maximální velikost stahovaných souborů. Výchozí hodnota je nejmenší z hodnot upload_max_filesize a post_max_size ze souboru php.ini a tento filtr lze použít pouze v rámci této hodnoty.

Pokud jste zvětšili velikost nahraných souborů pomocí výše popsaných metod a WordPress vám stále zobrazuje hodnotu menší, než je nastavená hodnota, zkontrolujte, zda nemáte nainstalovaný plugin, který tento filtr používá. Kód tohoto pluginu lze buď opravit, najít náhradu, nebo jej lze deaktivovat.

Maximální velikost nahraných souborů můžete zmenšit pomocí filtru ve funkcích vašeho motivu.php:

Add_filter("upload_size_limit", "16M");

Chybový klient chtěl odeslat příliš velké tělo

Pokud v protokolech nginx (/var/log/nginx/error.log) vidíme chybu jako:

XXXX#0: *XXXXXXXXXX klient určený k odeslání příliš velkého těla: XXXXXXX bajtů, klient: XX.XXX.XXX.XX, server: XXXXX, požadavek: "POST /engine/ajax/upload.php HTTP/1.1", hostitel: "XXX.com"

pak toto jisté znameníže potřebujete zvýšit hodnotu direktivy client_max_body_size konfigurační soubor nginx.conf v bloku http().

Děláme to pomocí ovládacího panelu nebo pomocí SSH a editoru VI, například:

# vi /etc/nginx/nginx.conf client_max_body_size 100M; # reload služby nginx

Ukončení editoru VI se provádí příkazy: wq s uložením obsahu nebo: q (:q!) bez uložení.

Direktiva client_max_body_size určuje maximum přípustná velikost tělo požadavku klienta, specifikované v poli „Content-Length“ v hlavičce požadavku. Pokud je velikost větší než zadaná, klientovi se vrátí chyba 413 (Příliš velká entita požadavku). Upozorňujeme, že prohlížeče tuto chybu nezobrazují správně. Nastavení parametru size na 0 zakáže kontrolu velikosti těla požadavku klienta.

Více možností pro řešení http chyb přes .htaccess

Vložte následující kód na konec souboru .htaccess:

SecFilterEngine Off SecFilterScanPOST Off

Je pro mě těžké vysvětlit posvátný význam tohoto kódu, ale někdy to pomůže.

Osobně jsem se také z vlastní zkušenosti přesvědčil o účinnosti další magické směrnice, kterou je nutné vložit hned na začátek .htaccess:

SetEnv MAGICK_THREAD_LIMIT 1

V mé praxi to kdysi vyřešilo problém, kdy došlo k chybě http při pokusu o stažení souboru většího než 1 MB, a to i přes všechny mnohem větší maximální povolené objemy stahovaných souborů a příkazy předepsané popsanými způsoby

Konflikt pluginů

Pokud se tato chyba objevila neočekávaně, tzn. Pokud jste neprovedli zásadní aktualizaci jádra nebo motivu, zapamatujte si, který plugin jste nedávno nainstalovali nebo aktualizovali. Možná to je ten důvod. Jedinou možností v tomto případě je postupně pečlivě deaktivovat nedávno nainstalované a zkontrolovat přítomnost této chyby.

To je asi vše, co mě z mé praxe napadlo. Je tam asi něco jiného, ​​pokud si vzpomenu, doplním to do tohoto příspěvku, ale ve většině případů většinou stačí výše popsané tanečky s tamburínou kolem vašeho WordPressu v boji s http chybami při stahování souborů.

Dnes se podívám na několik situací, kdy se vám může při nahrávání fotek na WordPress zobrazit chyba HTTP, a zároveň vám řeknu, co v tomto případě dělat. Tento problém se zobrazí ihned po kliknutí na tlačítko „Přidat mediální soubor“ na stránce pro úpravu příspěvku nebo v části „Soubory médií“ – jakmile v počítači vyberete soubor, který chcete použít. V tomto případě se v okně bootloaderu zobrazí fráze „Chyba HTTP“.

WordPress bohužel nedokáže nezávisle určit, jaký je skutečný problém, a proto ukazuje obecnou odpověď. Na druhou stranu tato zpráva také uživateli nic konkrétního neříká – k nalezení bude muset vyzkoušet několik přístupů správné rozhodnutíúkoly.

Běžné metody pro chyby HTTP ve WordPressu

Než zvážím trochu originálnější možnosti, dám vám několik triviálních tipů, které byste měli použít jako první.

1. Problém s hostingem

Nejprve zkuste obrázek nahrát znovu po několika minutách. Je možné, že v době prvního pokusu se na serveru vyskytly nějaké dočasné závady.

Pokud závada nezmizela, musíte vybrat nějaký jiný soubor, který chcete přidat: s dalšími jednoduchý název(bez speciálních znaků a ruských písmen) nebo ve špatném formátu (například PNG místo JPG).

Někdy hostitelé nastaví limit na váhu objektů importovaných na web - 2 MB, 4 MB, 8 MB atd. Pro test znovu použijte světlejší obrázek.

Při načítání obrázku do Chyba WordPress HTTP může nastat, když určitý hostitelský adresář nemá oprávnění k zápisu. Přejděte do adresáře FTP wp-content/uploads/ a pak se podívejte na přístupová práva složky, kterou potřebujete.

Pokud váš projekt WP obsahuje grafiku podle roku a měsíce, měli byste zkontrolovat odpovídající adresu, např. wp-content/uploads/2018/10. Přidávání souborů na server je povoleno s hodnotou "775" / "777", zatímco "666" nebo "664" tento postup zakázáno. V posledních dvou situacích jednoduše změňte přístupová práva pro odpovídající složku.

2. Problém se softwarem

Stává se, že v určitém konkrétní prohlížeč z nějakého mytického důvodu některé skripty nechtějí být provedeny. Buď kvůli jejich starým verzím, nebo proto nainstalované doplňky, ale to se občas stává. Stačí zkusit jiný prohlížeč. S tím souvisí další trik software— vymazání místní mezipaměti (je vhodné ji také zkontrolovat).

Druhý důležitá nuance v této „podsekci“ - staré verze PHP na serveru. WordPress počínaje větví 3.2 vyžaduje minimálně PHP 5.2.4. Zkontrolujte/aktualizujte tento software sami nebo požádejte o pomoc svého hostitele.

3. Klasické techniky WordPressu

Tyto „machinace“ by měly být prováděny téměř při jakémkoli problému se systémem. Když se během načítání ve WordPressu vyskytne chyba, první věcí, kterou musíte udělat, je zakázat všechny pluginy třetích stran.

Pokud tento přístup nefunguje, dalším krokem je nahrazení šablony jednou z základní témata. Čistý WP s výchozím rozložením a bez dalších modulů by neměl fungovat správně.

4. Zvyšte limit_paměti

Zvýraznil jsem tuto položku jako samostatnou položku, protože se objevuje poměrně často – náš CMS je velmi náročný na zdroje.

V obecný případ musíte upravit soubor wp-config.php umístěný v kořenovém adresáři hostingu. Napište do něj řádek:

define("WP_MEMORY_LIMIT", "256M");

define("WP_MEMORY_LIMIT", "256M");

5. Výchozí knihovna GD

Balíček WP CMS obsahuje 2 grafických knihoven ke zpracování - Imagick a GD Library. U prvního z nich si vývojáři čas od času všimli chyb HTTP, když načítání WordPressu obrázky, proto se doporučuje zadat druhý jako výchozí nástroj.

Pro implementaci metody do functions.php napíšeme:

function wp_default_image_editor( $editors ) ( $gd_editor = "WP_Image_Editor_GD" ; $editors = array_diff ( $editors , pole ( $gd_editor ) ) ; $editors , $gd_editor $editors"_ ,“ wp_default_image_editor");

function wp_default_image_editor($editors) ( $gd_editor = "WP_Image_Editor_GD"; $editors = array_diff($editors, array($gd_editor)); array_unshift($editors, $gd_editor); return $editors", "agewp add_filors; ) wp_default_image_editor");

6. Upravit.htaccess

Přidáním malého .htaccess můžete ovládat využití serverových prostředků knihovnou Imagick. Najděte soubor v kořenovém adresáři a upravte jej přes FTP a přidejte řádek:

SecFilterEngine Off SecFilterScanPOST Off

Nebo možnost:

# Vyloučit nahrávání souboru a skripty WP CRON z ověřování Uspokojit jakýkoli příkaz povolit, odmítnout Povolit od všech Odmítnout od žádného

To je v podstatě vše. Začněte s nejjednoduššími přístupy uvedenými na začátku a poté budete muset přejít ke složitějším. Samozřejmě je to nepříjemné přijímat Chyba HTTP při načítání fotografií nebo obrázků WordPress, ale jak vidíte, není to kritické. Zná někdo nějaké další metody? - sdílejte je níže.




Nahoru