WordPress v2.9
Sedapsi. Lõpuks ometi on ilmunud järjekordne WordPressi suurem väljalase, mis seekord kannab versiooninumbrit v2.9. Uuendatud on päris mitut asja ning oma kuulsusetud lõpu on leidnud ka mitu staažikat viga. Võib-olla kõige märkimisväärsem uuenduse leiame piltide juures, kus nüüdsest peale on võimalik meediat tuunida -- näiteks kärpida pildi suurust ning nähtavaid osasi.
Loodetavasti kõik töötab ehk teisisõnu -- kui midagi kusagilt pigistab, ärge hoidke seda enda teada.
Probleemid WordPressiga SSH võtmes
WordPress on väga tore tarkvara, kuid aeg-ajalt suudab ta ikka korralikult välja vihastada. Seekordseks põhjuseks on SSH automaatne uuendamine. Kui te veel ei tea, siis on WordPressi võimalik uuendada kolmel viisil: FTP, FTPS ja SSH. FTP on saatanast, seda ei pea ilmselt kellelegi kordama -- lõviosa kurja saadetakse Internetis korda sellega, et liigutatakse oma andmeid üle krüpteerimata kanali. FTPS ei ole mul tehniliselt võimalik ning järgi jääb seega SSH.
Ma võtsin täna kätte ja upgradesin oma serverit (tänud Tarkile). Nüüd on mul kõik vajalik kraam serveris olemas ning kui ma WordPressi uuendama lähen, siis ilmub kolmanda võimalusena ka SSH. Ometigi kui ma seda kasutan, saan ma järgneva veateate:
Unpacking the update.
Could not copy file: /srv/vhost/pronto.pushspace.com/wp-content/upgrade/wordpress-2.8.6/wordpress/wp-includes/js/codepress/engines/khtml.js
Installation Failed
Nii palju kui ma otsinud olen praeguseks on selgunud, et selle veateate põhjuseks on selline asi nagu meetod, kuidas faile kopeeritakse. On kellelgi ideid, kuidas sellest sitast saia teha? Ma saan installeerida osasi faile ja osasi uuendusi, aga mitte kõiki. Ühe põhjusena pakuti välja, et süsteem ei oska kopeerida 0 pikkusega faile.
UUENDUS:
Ise küsin, ise vastan. WordPressi SSH2 uuenduste koodis on kohutavalt labane viga. Nimelt faile kopeerides vaatab süsteem, kas infot õnnestus ühest failist teise kantida ja kui ei õnnestunud, siis annab vea. Paraku 0 pikkusega failides pole midagi kopeerida ning kui ei teostata explicit testi, siis saadaksegi vale tulemus. Põhimõtteliselt võib öelda, et PHP-s 0 == false, mis antud kontekstis on vale vastus. Et asja tööle saada, tõmmake lahti wp-admin/includes/class-wp-filesystem-ssh2.php, leidke sealt selline funktsioon:
function put_contents($file, $contents, $type = '' ) {
$file = ltrim($file, '/');
return file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents);
}
ja asendage see selle koodilõiguga:
function put_contents($file, $contents, $type = '' ) {
$file = ltrim($file, '/');
if (file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents) !== false)
return true;
else
return false;
}
UUENDUS 2:
Tundub, et see bugi on parandatud juba mõne aja eest, aga millegipärast pole seda peetud vajalikuks lisada vaheversioonidesse ning on märgitud muudatusena peatselt saabuva v2.9 verstaposti juurde. WordPressi ametlik parandus on pisut elegantsem kui minu oma:
function put_contents($file, $contents, $type = '' ) {
$file = ltrim($file, '/');
return false !== file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents);
}
Uuendus: WordPress v2.8.3
Uuendasin WordPressi ja uueks versiooniks on v2.8.3. WordPressi blogi sõnul avastasid nad turvalisusprobleemi, mis eelmise uuenduse käigus kahe silma vahele jäi ja sellest tingituna ka see vaheväljalase.
Vahepeal irdus WordPressi tiimi käest ka pisut informatsiooni järgmise suurema versioon (v2.9) kohta. Seekord paistab neil plaanis olevat kõrvaldada WordPressi üks suuremaid kitsaskohti ehk siis piltidega opereerimist. Plaanis on lisada universaalsed pildialbumid, piltide elementaarne töötlemine ja võtmesõnadega varustamine.

