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

40 thoughts on “Automatická aktualizace WordPressu – problémy a jejich řešení”

  1. Tahle chybová hlášení, to je vždycky oříšek, důvodů se člověk kolikrát nedopátrá, nebo by ho to stálo neadekvátně sil a času, takže to je super souhrn. :-) Jinak se to tu pěkně rozjíždí, čerstvé informace v češtině, to jedině vítám i pro své potřeby. Procházet až na pár výjimek anglické servery je přece jenom na dlouhé lokte.

  2. Ano, aktualizovat lze i přes SFTP, ale možná bude třeba i nějaká úprava na hostingu, pro bližší radu bych potřeboval vidět další podrobnosti (phpinfo, administrace)…

  3. Pro “ammi”: Mohu se zeptat, který webhosting podporuje pouze přístup SFTP? (Spíše mám opačný problém, že webhosting podporuje pouze FTP a ne SFTP.) Mohl by být i problém ve firewallu někde na cestě…, protože např. jednou na ČVUT – Fakultě elektrotechnické se mi nepodařilo používat FTP, byl tam povolen jen SFTP (klasické FTP tam bylo blokováno), někteří poskytovatelé internetu naopak blokují SFTP a FTP je povolen.

  4. Zdravím, jsem u banan.cz a automatické aktualizace mi taky nefungují, máte někdo zkušenosti co s tím? děkuji T.

  5. S automatickou aktualizací se mi objevují problémy i na některých lokálech. A to asi tak od páté, šesté verze před RC1. Proběhne download, pak rozbalovani a pak smrt. Někde kolem téhle doby se počítám dost zvýšily nároky na paměť. Bohužel jsem zatím neměl čas to zkoumat, ale je to pekelně otravné.

  6. tomas: Chtělo by to konkrétní informace a chyby. Zatím se nám to podařilo rozběhnout skoro všude (i když banan.cz jsem zatím nezkoušel). Pokud máte chuť, tak pošlete přístupy (klidně do nějaké testovací subdomény) na email pavelevap@separatista.net a podíváme se na to…

    michalbroz: Během RC verzí pak ale zase došlo ke snižování nároků při instalaci (byly odebrány importéry a další věci). Chtělo by to pořádně prozkoumat, platí to samé – stačí klidně poslat nějaké testovací přístupy (možná bude potřeba i FTP), podíváme se na to. Ne hned, ale podíváme – je to taková záliba :-)

  7. Ahoj, potreboval bych poradit s aktualizaci. Do dneska vse jelo jak melo. Dnes pri aktualizaci pluginu na me vyskocila hlaska Nepodařilo se připojit k FTP serveru http://www.xxx.cz:21 Nevite nekdo co s tim? Pritom heslo a vse zadavam spravne. Hledal jsem ruzne po forech, ale resni jsem nenasel. Pres Filezillu se na server bez problemu se stejnyma udajema dostanu.

  8. radek: Pokud se to stalo “z ničeho nic”, tedy např. bez nového pluginu či nějaké aktualizace, tak bych asi zkusil nejdříve kontaktovat podporu hostingu, jestli něco neměnili oni. Občas také stačí zadat při aktualizaci místo konkrétního serveru pouze localhost.

  9. Nemenil jsem nic. Jen ted honem premyslim, jestli jsem nahodou neinstaloval nejaky plugin. Zadal jsem ted misto serveru LOCALHOST a plugin se nainstaloval, ale vyhodilo to i tuto chybu. Co s ni? Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/htdocs/xxx/wp-content//upgrade/wpf_update/) is not within the allowed path(s): (/tmp:/usr/local/lib/php:/usr/share/file:/usr/bin-safe:/home) in /htdocs/xxx/wp-content/plugins/wp-forecast/wpf_autoupdate.php on line 31

    Pritom jsem ted aktuializoval uplne jiny plugin, nez forecast.

  10. Zkus ten plugin deaktivovat. Je to divné, podle mě něco “kutí” na hostingu (nějaké omezení), ale může to být i problém toho pluginu. Případně pošli na email (pavelevap@separatista.net) přihlašovací údaje do WordPressu a FTP a zkusíme se na to podívat.

  11. Dobrý den,

    mám dotaz, co s tímto hlášením, děkuji :)

    Warning: copy() has been disabled for security reasons in /3w/wz.cz/t/tridni-web-strana/wp-admin/includes/class-wp-filesystem-direct.ph

  12. Dobry den,
    wordpress pouzivam teprve par dni, proto bude mozna muj dotaz zbytecny. Nicmene pri pokusu o automatickou aktualizaci skoncim hned u prvni hlasky “Aktualizace je stahována z http://cs.wordpress.org/wordpress-3.0.4-cs_CZ.zip…” Nic dalsiho uz se nedeje, nic se nestahne, nezacne instalovat, nevyskoci zadna chybova ani jina hlaska… Co s tim?

  13. Migel: Problém byl dále řešen v našem fóru.

    hmacek: Není to zbytečný dotaz, ale velmi častý problém. Na vině je většinou nějaký problém v konfiguraci hostingu (nestandardní nastavení), které je třeba obejít. Z jaké verze aktualizujete?

    Zkusil bych se podívat, zda se v adresáři wp-content vytvořil podadresář upgrades, případně jaká má nastavená práva (CHMOD) a co v něm konkrétně je. Dále to může souviset s nedostatečnou pamětí (memory_limit, viz naše fórum) či nějakou jinou restrikcí ze strany hostingu. Zkuste také pro jistotu deaktivovat všechny pluginy a nasadit výchozí šablonu Twenty Ten. Pokud nic nepomůže, pošlete prosím přihlašovací údaje (WordPress a FTP) na email pavelevap@separatista.net, zkusíme se na to podívat…

  14. zdravim, funguje nekomu automat. akt. a instalace pluginu na hostingu banan.cz? diky za info

  15. tomas: Ano, sice je to s problémy, ale zprovoznit to jde i u hostingu Banán.cz. Doporučuji pročíst následující vlákna v našem fóru (1 a 2), případně pokračovat s dotazem ve fóru, kde problém velmi často vyřešíme.

Napsat komentář

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