Problema: Dopo l’aggiornamento al PHP 7.3 il plugin per WordPress Crayon Syntax Highlighter, utilizzato per evidenziare codici di programmazione, smette di funzionare e blocca la visualizzazione delle pagine nelle quali è utilizzato.
Soluzione: Modificare due file per rendere compatibile il riconoscimento per espressioni regolari con le nuove definizioni di PCRE2
L’errore che si presenta è tipo il seguente: AH01071: Got error 'crayon-syntax-highlighter/crayon_langs.class.php on line 340PHP message: PHP Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in
Purtroppo il plugin, per quanto buono, non è aggiornato da 4 anni.
In particolare presenta problemi con l’aggiornamento del PHP alla versione 7.3, per via delle nuove definizioni PCRE2 ed in particolare proprio per la presenza di un segno – (meno), proprio come trattato nel precedente articolo.
Per risolvere il problema facciamo nel modo seguente. Posizioniamoci nella cartella del plugin /wp-content/plugins/crayon-syntax-highlighter/
Modifichiamo il file crayon_langs.class.php
alla riga 340
1 |
return preg_replace('/[^\w-+#]/msi', '', $id); |
Sostituiamo la riga con:
1 |
return preg_replace('/[^\w\-+#]/msi', '', $id); |
Modifichiamo il file crayon_formatter.class.php
alla riga 118
1 2 |
$toolbar_height = $font_size * 1.5 . 'px !important;'; $info_height = $font_size * 1.4 . 'px !important;'; |
Sostituiamo le due righe con:
1 2 3 |
$altezza = 1.5; $toolbar_height = $_font_size * $altezza . 'px !important;'; $info_height = $_font_size * $altezza . 'px !important;'; |
Fatto tutto questo il problema sarà risolto e potremo continuare ad usare il plugin.