Automatická aktualizace WordPressu – problémy a jejich řešení

Problémy s automatickou aktualizací WordPressu se objevují nejen u českých hostingů, ale všude na světě. Je mnoho různých nastavení serverů a pro vývojáře tak není vůbec jednoduché, aby vše správně fungovalo všude. Situace se sice s verzí 2.8 trochu zlepšila, ale neustále se setkáváme s někým, komu tato příjemná funkce nefunguje (velmi často jde o nekvalitní freehostingy). Málokdo ale ví, že jde pokročilým nastavením (a případně i domluvou s hostingem) mnohé zachránit. Přinášíme tak několik příkladů, jak podobný problém vyřešit.

Jeden z tazatelů naší podpory měl s automatickými aktualizacemi také problém a sám nabízel vysvětlení nefunkčnosti, když “měl hlavní adresář uložen jinde než ho WordPress hledá”. Není však přímo problém v tom, že je WordPress nainstalován v podadresáři, ale v tom, že na některých serverech se projevuje chyba WordPressu, kdy nesprávně vyhodnotí umístění WordPressu, pokud má FTP uživatel nastaven jiný hlavní adresář (root) než ten s WordPressem.

1) V tomto konkrétním případě spočíval problém částečně opravdu v tom, že FTP účet (uživatel) má nastaven jako svůj hlavní adresář (root), ale už se tam nenachází WordPress, který je v např. v nějakém podadresáři. Jedno z řešení je vytvořit nový FTP účet (uživatele) pouze pro tuto instalaci WordPressu, nastavit mu jako hlavní adresář (root) právě adresář s WordPressem a až se automatická aktualizace optá na FTP přístup, tak je třeba tam zadat právě tento účet (podrobnosti o celém problému naleznete zde). Často si ale na hostingu nemůžete vytvářet nové FTP účty, takže tu máme jiné řešení, které lze použít jednoduše vložením následujícího kódu na konec souboru wp-config.php:

if(is_admin()) {
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 );
}

Tento problém obvykle poznáte podle následujících chybových hlášek (anglicky / česky):

Unable to locate WordPress Content directory (wp-content). / Nepodařilo se najít adresář WordPressu s uživatelským obsahem (wp-content).

Installation Failed / Instalace se nezdařila

2) Druhý častý problém je neustálé zadávání přístupových údajů k FTP. Tohoto “obtěžování” se lze zbavit také jednoduše, a to opět přidáním následujích informací do wp-config.php:

define("FTP_HOST", "hostitelsky_server"); // Zde je třeba doplnit server.
define("FTP_USER", "uzivatelske_jmeno"); // Zde je třeba doplnit uživatelské jméno.
define("FTP_PASS", "heslo"); // Zde je třeba doplnit heslo.
define("FS_METHOD", "direct");

3) Velmi zajímavý je i třetí problém, kdy anglická verze WordPressu automaticky aktualizovat jde, ale česká už nikoliv. Pluginy jdou také aktualizovat v pořádku. Takže určitě vyzkoušejte aktualizovat jen anglickou verzi. Nejsme si zcela jisti správným řešením, ale většinou se tento problém objevuje při nedostatečné hodnotě paměti (memory_limit), která by měla být alespoň 32 MB (obvykle se chyba ukazuje, když je pouze 24 MB). Paměť můžete zkusit navýšit přes wp-config.php, pomocí .htaccess, ale většinou je jediným možným řešením komunikace s hostingem a žádost o navýšení. Česká verze je trochu větší než anglická (obsahuje lokalizační soubory ve dvou formátech), takže předpokládáme, že to s pamětí prostě o kousek nevyjde.

4) Další problém nastává s restriktivním nastavením open_basedir, které poznáte obvykle podle chybové hlášky během aktualizace, která obsahuje větu “Warning: file_exists() [function.file-exists]: open_basedir restriction in effect”. V tomto případě je třeba opět zasáhnout do souboru wp-config.php a přidat následující kód (podrobnosti):

define('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp');

5) Automatická aktualizace také nemusí fungovat, pokud máte nízký memory_limit (doporučeno je alespoň 32 MB, pokud máte méně, tak požádejte hosting o navýšení), nebo nedostatečné místo na hostingu (balíček WordPressu po rozbalení zabere téměř 10 MB, takže by mělo být na FTP raději alespoň 20 MB volného místa).

6) Poměrně častý problém se objevuje u mnohých freehostingů, kde je zapnutý safe_mode patrně ještě v kombinaci s nějakým jiným bezpečnostním opatřením. Jednou z možností je tady zkusit požádat hosting o vypnutí safe_mode, přejít na placený hosting (který by to už umožňovat měl) nebo prostě aktualizovat pluginy ručně prostřednictvím FTP (stáhnout plugin, rozbalit ho a nahrát do příslušné složky v adresáři wp-content/plugins), což je však pěkná otrava. Obvykle se v těchto případech objevuje některá z následujících chyb:

Warning: touch() [function.touch]: SAFE MODE Restriction in effect. The script whose uid is 12345 is not allowed to access...

V případě výše uvedené chyby však máte ještě poměrně velkou šanci na zprovoznění, návod naleznete v našem fóru.

Objevil se u vás nějaký jiný problém s automatickou aktualizací? Zanechte zde komentář, nebo použijte naše fórum, kde se ho s vámi pokusíme vyřešit…

Nejoblíbenější hosting pro WordPress WEDOS.cz

38 komentářů u „Automatická aktualizace WordPressu – problémy a jejich řešení“

  1. Dobrý den,
    dneska jsem chtěl provést aktualizaci 2 pluginů – jednoho na multilanguage a druhého na kontaktní formulář, který používáme na našich stránkách a ačkoliv mi to napsalo, že aktualizace proběhla úspěšně, když jsem pak klikl na stránky a chtěl jsem pokračovat, tak mi to od té doby vždy píše

    Fatal error: Call to a member function get_default_language() on a non-object in /www/doc/www.whiskylifeprague.cz/www/wp-content/themes/Avada/admin/index.php on line 62

    do wordpressu se v podstatě přihlásím, ale nepustí mne to kamkoliv do administrativního rozhraní jediné co to píše je tohle. Nevíte co s tím? Nebo jak vrátit tu aktualizaci zpátky, lze-li to?
    Děkuji.

  2. Adevarad: Tak tento komentář mi bohužel unikl, ale předpokládám, že po několika letech už to nebude problém? :-)

    Lukáš: Patrně jde o nějaký konflikt mezi šablonou Avada a pluginem Polylang. Možná už to bylo vyřešeno v jejich nových verzích, případně můžete použít řešení uváděné zde (anglicky).

  3. Dobré velikonoční odpoledne,

    prosím Vás urgentně o pomoc, protože netuším co se stalo, nicméně teď netuším co mám dělat.

    Ještě než jsem se přihlásila do administrace, nepustilo mne to přes mé dřívejší heslo, pod kterým jsem se běžně přihlašovala. Tudíž jsem požádala o vytvoření nového hesla. Nahrála jsem nové fotky do médií, aktualizovala jsem wordpress a naráz bum, nemám vůbec nic, veškerá má dosavadní práce je fuč a nevím co s tím udělat. Strávila jsem nad tím spoustu času i energie a naráz nemám vůbec nic, proč? Co se stalo? Nehledě na to, že mne to pak nepustilo i přes to nové, opět jsem musela požádat o nové heslo. Poradíte mi prosím někdo?

    Předem moc děkuji za případnou radu či pomoc.

    Jedná se o stránky http://www.nikaheinz.cz

    S láskou a vděčností

    Nika <3

  4. Dobrý den,
    po automatickém upgrade na WP 3.9.11 se neotevře okno pro tělo příspěvku. Mohu psát jen nadpis. Příspěvek lze vložit jen ve složce Nástěnka, Rychlý příspěvek, poté Uložit koncept, označím ho (ani v následně otevřeném příspěvkovém okně se nezobrazí tělo příspěvku), Publikovat – příspěvek se zobrazí na hlavní stránce.
    Poté jsem aktualizoval všechny pluginy, šablonu Magazine Basic, WP 4.2.2 a nic se nezlepšilo. Díky za radu.

  5. hlavka: Patrně tam došlo k nějakému konfliktu s pluginem či šablonou, zkuste nejdříve deaktivovat všechny pluginy a nasadit nějakou výchozí šablonu (např. Twenty Sixteen).

  6. Děkuji, provedl jsem dle Vaší rady, jde však jen vkládat příspěvek rychlý (jako dříve) a normální pouze v záložce HTML, nejde v Editoru (nelze ani do něj přepnout) a nejdou vkládat mediální soubory. Stejně se chová Twenty Sixteen i Magazine Basic.

  7. hlavka: Možná tam došlo k situaci, že jste měl novější plugin, který měl konflikt se starší verzí WordPressu, těžko říci. Ale pokud už vše funguje, tak to můžeme patrně uzavřít s tím, že šlo o nějaký konflikt, který byl vyřešen automatickou aktualizací WordPressu.

  8. Nedávno jsem aktulizoval WordPres na poslední verzi, vše proběhlo hladce. Od té dob jsem na stránkách nebyl, dnes jsem se chtěl přihlásil na po kliknutí na administraci se mi objevily následující hlášky:

    Warning: set_time_limit() has been disabled for security reasons in /data/web/virtuals/30287/virtual/www/wp-content/plugins/media-file-manager/media-relocator.php on line 950

    Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/30287/virtual/www/wp-content/plugins/media-file-manager/media-relocator.php:950) in /data/web/virtuals/30287/virtual/www/wp-includes/pluggable.php on line 1210

    Víc nic, jsem poněkud v šoku, nechápu co se děje, a ani kdybych chápal, nevím co s tím, protože se tam prostě nedostanu. Prosím HELP

  9. Jiří Chludil: Chybu způsobuje plugin Media File Manager, který používá funkci set_time_limit(), která je na používaném hostingu (Wedos?) zakázaná. Můžete buď deaktivovat tento plugin nebo vypnout zobrazování chyb v administraci hostingu. Není třeba se ale ničeho obávat, není to nic závažného a nemělo by to ovlivnit funkčnost.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *