Astăzi mi-am actualizat serverul web de la Debian Buster la Bullseye și a fost de fapt o actualizare destul de simplă. Totul părea să funcționeze până când am încercat să ajung la câteva site-uri WordPress de pe server. La început am primit o eroare despre un modul MySQL lipsă. Mesajul de eroare primit de la PHPMyAdmin mi-a dat un indiciu mai bun: spunea că lipsește modulul mysqli.
Asa ca l-am instalat cu apt install php7.4-mysqli
și asta a făcut ca site-urile mele WordPress să funcționeze din nou.
Singura problemă acum este însă că nu pot actualiza Wordpress. De fiecare dată când încerc să actualizez WordPress, primesc o eroare:
![Eroare de actualizare WordPress](https://i.stack.imgur.com/mfqFU.png)
Bănuiesc că trebuie să instalez suphp. Dar înainte să o fac, poate cineva să confirme că este într-adevăr cazul? Sau trebuie să fac altceva după upgrade-ul de la Buster la Bullseye?
EDITAȚI | ×:
Mi-a luat destul de mult timp să-mi dau seama ce se întâmplă de fapt. Acum știu, nu am idee cum să rezolv problema.
Mesajul de eroare pe care îl dă WP este de fapt incorect. După cum se dovedește, asta este capabil să despacheteze actualizarea foarte bine în folderul corespunzător. Dar atunci când verifică dacă fișierele s-au dezambalat, nu merge bine. Problema constă în această bucată de cod în update-core.php:
foreach ( $roots ca $root ) {
if ( $wp_filesystem->exists( $from . $root . 'readme.html' )
&& $wp_filesystem->există( $de la . $root . 'wp-includes/version.php' )
) {
$distro = $root;
pauză;
}
}
if ( ! $distro ) {
$wp_filesystem->delete( $from, true );
return new WP_Error( 'insane_distro', __( 'Actualizarea nu a putut fi dezambalată.' ) );
}
Ceea ce face aici, este pur și simplu să verifice dacă există două fișiere în folderul în care tocmai a despachetat fișierul zip. Acest lucru eșuează. Și motivul este următorul:
Folosesc metoda FTP pentru a instala actualizări. Deci, când îi spun să actualizeze, mai întâi își dă seama în care ar trebui să descarce fișierul zip. Acest folder este stocat în $working_dir și este folosit din acel moment pentru restul procesului de actualizare.Adevărata cale pe server este /domains/domainname.com/htdocs/wp-content/upgrade/
dar din moment ce utilizatorii FTP sunt crootati, WP găsește și stochează /htdocs/wp-content/upgrade/
in schimb. Fișierul de actualizare este descărcat în acest folder și apoi dezambalat.
Apoi face verificarea de mai sus. Și asta eșuează pentru că încearcă să găsească un fișier în /htdocs/wp-content/upgrade/
în timp ce adevărata locație este /domains/domainname.com/htdocs/wp-content/upgrade/
.
Înțeleg de ce descarcă pachetul foarte bine (din moment ce utilizatorii FTP sunt crootate). Dar nu înțeleg de ce nu reușește despachetarea ulterioară, dar eșuează atunci când verifică existența fișierelor...
Am verificat toate setările php și nu pot găsi nimic diferit cu setările de dinainte de upgrade-ul Debian...