Sajt vam je pao posle ažuriranja WordPress-a? Evo šta se dešava
Kada vaš WordPress sajt prestane da radi posle ažuriranja, panika može da vas obuzme. Ovaj članak pruža jednostavna rešenja za vraćanje funkcionalnosti vašeg sajta.
Šta ćete naučiti
- Kako prepoznati problem sa WordPress-om i WP Rocket
- Brza rešenja za obnavljanje vašeg sajta
- Kako primeniti trajnu ispravku koda
- Najčešća pitanja i odgovori o greškama
- Kako obezbediti stabilnost sajta nakon ažuriranja
Poslednjih dana smo od nekoliko klijenata dobili istu poruku, sajt je prestao da radi, prikazuje samo belu stranicu sa obaveštenjem o grešci, i to baš posle ažuriranja WordPress-a. Nismo krivi ni mi ni hosting, u pitanju je poznat sukob između najnovije verzije WordPress-a i jednog od najpopularnijih plugina za ubrzavanje sajta, WP Rocket. Evo objašnjenja i rešenja.
Kako se to primeti
Otvorite sajt, i umesto sadržaja dobijete poruku “There has been a critical error on this website”. Isto se dešava i kad pokušate da uđete u administraciju. Ako ste ranije ažurirali WordPress na verziju 7.1 i imate instaliran WP Rocket, ovo je verovatno tačno vaš slučaj.
Zašto se sajt srušio
Bez ulaženja u previše tehničkih detalja, WordPress je u verziji 7.1 promenio unutrašnji način na koji obeležava funkcije koje se kače na razne događaje u sistemu. Plugin WP Rocket, u delu koda koji se stara o njegovoj vezi sa Cloudflare-om, na jednom mestu očekuje da taj podatak bude tekst, a sada dobija broj. Rezultat je greška koja obara ceo sajt, i to toliko rano da se ni admin panel ne otvara.
Ovo se dešava isključivo kada su ispunjena oba uslova, WordPress 7.1 i aktivan WP Rocket. Testirali smo i najnoviju verziju plugina, i problem je i dalje tu, WP Rocket još uvek nije objavio zvaničnu ispravku.
Prva pomoć, ako je sajt već pao
Preko FTP-a ili File Manager-a u hosting panelu, otvorite wp-content/plugins/ i preimenujte folder wp-rocket, na primer u wp-rocket-off. WordPress automatski isključi plugin kad mu se promeni ime foldera, i sajt će odmah ponovo raditi. Keširanje iz WP Rocketa neće raditi dok ne primenite rešenje ispod, ali sajt je dostupan i to je prioritet.
Trajno rešenje
Postoje dve opcije, i obe rade:
Opcija A: Ostavite WP Rocket ugašen
Ako vam keširanje iz WP Rocketa nije ključno (na primer, ako imate keširanje na nivou hostinga ili preko Cloudflare-a), možete jednostavno ostaviti plugin isključen dok WP Rocket ne izbaci svoju zvaničnu popravku.
Opcija B: Primenite ispravku i vratite WP Rocket
Ispravka je jedna linija koda u fajlu plugina:
// Fajl: wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php
// Staro:
if ( substr( $key, - strlen( $method ) ) !== $method ) {
// Novo:
if ( substr( (string) $key, - strlen( $method ) ) !== $method ) {Problem je što se ova izmena obriše svaki put kad se WP Rocket ažurira. Zato smo pripremili gotov dodatak koji sam brine o ovome, jednom ga postavite i on sam primeni ispravku i posle svakog narednog ažuriranja plugina, dok zvanično rešenje ne stigne:
<?php
/**
* Plugin Name: WP Rocket, popravka za WordPress 7.1
* Description: Sam popravlja gresku koja obara sajt kada je WordPress azuriran na 7.1 a instaliran je WP Rocket.
* Version: 1.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action( 'admin_init', 'sm_wp71_wprocket_patch' );
add_action( 'upgrader_process_complete', 'sm_wp71_wprocket_patch' );
function sm_wp71_wprocket_patch() {
$file = WP_PLUGIN_DIR . '/wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php';
if ( ! file_exists( $file ) || ! is_readable( $file ) || ! is_writable( $file ) ) {
return;
}
$contents = file_get_contents( $file );
if ( false === $contents || strpos( $contents, '(string) $key' ) !== false ) {
return;
}
$patched = preg_replace( '/substr(s*$keys*,/', 'substr( (string) $key,', $contents );
if ( null === $patched || $patched === $contents ) {
return;
}
@copy( $file, $file . '.bak-' . gmdate( 'Ymd-His' ) );
file_put_contents( $file, $patched );
}Kako da ga postavite, dve mogućnosti:
- Sačuvajte kod kao fajl (npr.
wp-rocket-wp71-fix.php) i preko FTP-a ga ubacite uwp-content/mu-plugins/(napravite folder ako ne postoji). Ovi fajlovi rade automatski, bez aktiviranja. - Ili ga dodajte kao snippet preko plugina za to (WPCode, Code Snippets), podešen da se izvršava na
admin_init.
Kad je popravka na mestu, WP Rocket možete slobodno vratiti (preimenujte folder nazad u wp-rocket), sajt ostaje ispravan i pored toga što je WordPress ažuriran.
Pitanja koja nam klijenti najčešće postave
Znači li ovo da je WordPress nebezbedan?
Ne, ovo nije bezbednosni propust, nego sukob u kodu između dva odvojena sistema koja obično dobro rade zajedno. Dešava se povremeno kad izađe veće ažuriranje, i uglavnom se brzo reši.
Da li treba da prestanem da ažuriram WordPress dok se ovo ne reši?
Ne preporučujemo to. Odlaganje ažuriranja ostavlja sajt izložen drugim, ozbiljnijim problemima. Bolje je primeniti ovu malu popravku i nastaviti normalno da ažurirate.
Šta ako ne znam kako da uđem preko FTP-a ili da menjam fajlove?
Nema potrebe da se time bavite sami. Ako smo vam mi hosting ili održavanje sajta, ovo rešavamo mi, samo nam javite da vam se to desilo ili da hoćete da preventivno primenimo popravku pre nego što ažuriramo WordPress.
Često postavljana pitanja
Znači li ovo da je WordPress nebezbedan?
Da li treba da prestanem da ažuriram WordPress dok se ovo ne reši?
Šta ako ne znam kako da uđem preko FTP-a ili da menjam fajlove?
Kako mogu brzo da popravim svoj sajt?
Da li postoji trajno rešenje za ovaj problem?
Kategorije
- Affiliate program (1)
- Bezbednost (11)
- CloudFlare (3)
- cPanel uputstva (8)
- Domeni (7)
- Elektronska pošta (3)
- Hosting podrška (4)
- Hosting saveti (16)
- Optimizacija (4)
- Promocije (4)
- SSL (2)
- Unapređenja (3)
- Uncategorized (2)
- Wordpress (9)












