Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Fatal error: Array and string offset access syntax with curly braces is no longer supported

Dobrý den,

Po upgrade na PHP 8 přestal web fungovat a pouze zobrazoval tuto chybu

Fatal error: Array and string offset access syntax with curly braces is no longer supported in /www/doc/www.mj-servis.cz/www/wp-includes/script-loader.php on line 706
( '{' == $value{0} && '}' == $value{strlen( $value ) - 1} ) || / řádek 706
( '[' == $value{0} && ']' == $value{strlen( $value ) - 1} ) || / řádek 707

Zde jsem našel, že bude pravděpodobně problém v složených závorkách. Když je ale změním na hranaté, tak se nic nezmění.

( '{' == $value{0} && '}' == $value[strlen( $value ) - 1] ) || / řádek 706
( '[' == $value{0} && ']' == $value[strlen( $value ) - 1] ) || / řádek 707

Nevíte, prosím Vás, v čem je problém a hlavně jak to opravit?

Děkuji

PS. Web je ve WordPress

Předmět Autor Datum
Vždyť jsi to pořád nezměnil.
Wikan 18.08.2021 15:18
Wikan
Jestli myslíte tohle ( '{' == $value[0] && '}' == $value[strlen( $value ) - 1] ) || ( '[' == $value…
MichalDM 18.08.2021 15:25
MichalDM
Jinou chybu ve zcela jiném souboru. Bude potřeba opravit všechny chyby.
Wikan 18.08.2021 15:50
Wikan
No, plugin se dá deaktivovat snadno. Jednoduše složku pluginu přejmenovat. Jenže, to opět hlásí zcel…
MichalDM 18.08.2021 16:05
MichalDM
Zakomentováním si nepomůžeš, je potřeba ten kód opravdu opravit. Warning This function has been DEP…
Wikan 18.08.2021 16:14
Wikan
Jenže jak mám takový kód opravit function wp_magic_quotes() { // If already slashed, strip. if ( ge…
MichalDM 18.08.2021 16:31
MichalDM
Otevřel jsi ten odkaz? Always returns false.
Wikan 18.08.2021 16:48
Wikan
Tak problém byl v zastaralé verzi WordPress, která PHP 8 nepodporovala. Nicméně, vrácení zpět na PHP… poslední
MichalDM 21.08.2021 18:14
MichalDM

Jestli myslíte tohle

( '{' == $value[0] && '}' == $value[strlen( $value ) - 1] ) ||
( '[' == $value[0] && ']' == $value[strlen( $value ) - 1] ) ||

tak to hlásí zcela jinou chybu

Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /www/doc/www.mj-servis.cz/www/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/package.module.nextgen_admin.php on line 368

Teoreticky by bylo nejjednodušší tento plugin zkusit deaktivovat. Jenže nevím, jaký na webu plní účel a hlavně, jak ho deaktivovat pouze přes FTP.

No, plugin se dá deaktivovat snadno. Jednoduše složku pluginu přejmenovat. Jenže, to opět hlásí zcela jinou chybu

Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_gpc() in /www/doc/www.mj-servis.cz/www/wp-includes/load.php:760 Stack trace: #0 /www/doc/www.mj-servis.cz/www/wp-settings.php(380): wp_magic_quotes() #1 /www/doc/www.mj-servis.cz/www/wp-config.php(96): require_once('/www/doc/www.mj...') #2 /www/doc/www.mj-servis.cz/www/wp-load.php(37): require_once('/www/doc/www.mj...') #3 /www/doc/www.mj-servis.cz/www/wp-blog-header.php(13): require_once('/www/doc/www.mj...') #4 /www/doc/www.mj-servis.cz/www/index.php(17): require('/www/doc/www.mj...') #5 {main} thrown in /www/doc/www.mj-servis.cz/www/wp-includes/load.php on line 760

A opět, když jsem zkusil tuhle metodu zakomentovat, tak to opět hlásí zcela jinou chybu. Tímhle způsobem to může jenom totálně do***at a stejně to nebude funkční.

Jenže jak mám takový kód opravit

function wp_magic_quotes() {
	// If already slashed, strip.
	if ( get_magic_quotes_gpc() ) {
		$_GET    = stripslashes_deep( $_GET );
		$_POST   = stripslashes_deep( $_POST );
		$_COOKIE = stripslashes_deep( $_COOKIE );
	}

	// Escape with wpdb.
	$_GET    = add_magic_quotes( $_GET );
	$_POST   = add_magic_quotes( $_POST );
	$_COOKIE = add_magic_quotes( $_COOKIE );
	$_SERVER = add_magic_quotes( $_SERVER );

	// Force REQUEST to be GET + POST.
	$_REQUEST = array_merge( $_GET, $_POST );
}

Navíc, u ostatních webů s tím nebyl problém. A teď to vadí dvěma najednou.

Zpět do poradny Odpovědět na původní otázku Nahoru