Ha saját telepítésű WordPress-t használsz, bizonyára ismerős a kis badge az Updates és a Plugins menüpontok mellett, ami egy elérhető frissítésre figyelmeztet. A WordPress rendelkezik „automatikus” frissítési opcióval (ami a nevével ellentétben nem képes automatikusan frissíteni, viszont legalább arra képes, hogy az utasításodra letöltse a szerverre és a beavatkozásod nélkül telepítse az új verziót), azonban ez tapasztalataim szerint elég szűk körben használható. Vagyis nem működik.
Azaz az alapbeállításokkal legalábbis így van.
Alapból egy FTP vagy FTPS hozzáférést tudunk megadni a WordPress-nek, amire bejelentkezve saját magát megtalálja és felül tudja írni. Én több blogot is üzemeltetek. Ezen az oldalon pl. csak SFTP hozzáférés van (ami merőben különbözik az FTPS-től, nem keverendőek!), egy másikon viszont volt FTPS is, de valamiért sosem működött a WordPress-el.
A héten megelégeltem a kézi frissítés fáradalmait és Czo segítségével nekiálltam kidebuggolni, mi lehet a probléma. Az eredmény a következő: Az FTPS hozzáférés azért nem ment, mert a gépen csak az aktív kapcsolat működött, a WP meg mindenáron passzívan akart csatlakozni. A WordPress rendelkezik egy beépített FTP implementációval, és igyekszik ezt használni a többet tudó, gyári PHP FTP lib helyett. Erről viszonylag könnyen le tudjuk beszélni:
- Simán le kell törölni a
wp-admin/includes/class-wp-filesystem-ftpsockets.php
-t - Ki kell kommentezni az alábbi kódrészletet a
class-wp-filesystem-ftpsockets.php
-ben:// @ftp_pasv( $this->link, true ); // if ( @ftp_get_option($this->link, FTP_TIMEOUT_SEC) < FS_TIMEOUT ) // @ftp_set_option($this->link, FTP_TIMEOUT_SEC, FS_TIMEOUT);
Ez után már működnie kell a PHP saját ftp libjével.
A másik gépen viszont SFTP kapcsolatra volt szükség: és micsoda meglepetés – a WordPress támogat SFTP kapcsolatot, ha az alatta lévő PHP rendelkezik SSH támogatással. Ehhez elméletileg csak annyi a dolgunk, hogy a szerverre felrakjuk a megfelelő libet, pl. így:
pecl install -f ssh2
További tippek a felrakáshoz Kevin van Zonneveld blogján.
Ezek után megjelenik az SSH2 opció is az automatikus frissítésnél, valamint két új mező, ahová akár a kulcsos belépéshez szükséges adatokat is beállíthatjuk.
Sok sikert!