itaeng

Blog

Pubblicato in:wordpress php

Sistemare WPBakery Visual Composer perché supporti php8

14FEB2023

Alcuni di voi avranno già visto questo errore, altri lo vedranno man mano che gli hosting dismetteranno il supporto a php7:

Uncaught Error: Call to undefined function each() in /var/www/myoldwebsite/wp-content/plugins/js_composer/include/classes/core/class-vc-mapper.php:111

Come risolvere? Aggiornare il sito non è sempre un'opzione e il passaggio ad altri page builder non è affatto indolore.

Per fortuna, dopo un po' di tentativi ho scoperto che l'errore è semplice da correggere e chiunque, con un minimo di esperienza in programmazione, può riuscirci.

Il problema è la funzione each() usata in due punti nel file class-vc-mapper.php. Questa funzione è stata deprecata e non esiste più su php8. Per questo motivo è necessario (e sufficiente) sostituirla con un foreach.

Quindi, a riga 111 bisognerà sostituire questo codice

while ( $activity = each( $this->init_activity ) ) {
con questo
foreach ( $this->init_activity as $activity ) {

 

mentre, a riga 186, questo codice

while ( $activity = each( $this->element_activities[ $tag ] ) ) {
andrà sostituito con questo
foreach ( $this->element_activities[ $tag ] as $activity ) {

Fine!

Davvero, non serve altro. Se non ci sono problemi di incompatibilità con altri plugin o con il tema, il vostro sito wordpress riprenderà a funzionare correttamente.

Pubblicato in:php script segnalazioni

LogHappens - come tenere d'occhio i log files, senza impazzire

01APR2017

Qualche tempo fa ho scoperto un tool dal nome divertente e con uno scopo utilissimo: poter tenere d'occhio log files, a piacimento, senza diventare matti interpretando file di testo da centinaia di righe, solitamente formattati in modo non troppo chiaro.

Tutto molto bello, peccato che creare dei nuovi parser è un delirio di regex, regole e requisiti non proprio chiarissimi... così ho iniziato a fare un mio parser.

LogHappened

Così è nato LogHappens. La grafica è minimale e molto semplice: un menu laterale in cui scegliere il log che si vuole visualizzare, un contatore per avere sempre un'idea di quante entries sono presenti per ogni log file... ed i log. Suddivisi come preferisci, anche se probabilmente farlo per data e ora è il modo più semplice. Quando succede qualcosa di nuovo, per esempio viene rilevato una nuova entry in uno dei file, LogHappens mostra un popup del browser (mostrato quindi dal sistema operativo, anche quando l'app non è in primo piano).

Sì, ma come funziona?

Il funzionamento, come dicevo, doveva essere molto semplice: In una cartella `logics` sono presenti tanti files quanti sono i log che vuoi tenere sotto controllo. Nella cartella `logics_templates` sono presenti invece, come puoi immaginare, alcuni esempi di file logics. Uno di questi serve per interpretare i log files di apache, e contiene questo codice:


<?php
$menu = [
    'icon' => 'build',
    'color' => 'red',
    'title' => 'Apache error.log',
    'file' => '/var/log/apache2/error.log'
];

$content = file($menu['file']);
$log = [];

foreach ($content as $line) {
    // Grab the log's time and group logs by time
    $time = substr($line, 1, 19);
    $time = date("l d-m-Y - H:i:s", strtotime($time));

    // Remove date-time and other useless informations from the log details
    $line = substr($line, 34);
    $line = preg_replace('[\[:error.*\]]', '', $line);
    $line = preg_replace('[\[pid .*\]]', '', $line);
    $line = str_replace('PHP', '', $line);
    $line = trim($line);

    // Highlight the type of errors, using a badge
    $line = preg_replace("/^Notice: /", "Notice: ", $line);
    $line = preg_replace("/^Warning: /", "Warning: ", $line);
    $line = preg_replace("/^Fatal error: /", "Fatal error: ", $line);
    $line = preg_replace("/^Parse error: /", "Parse error: ", $line);
    $line = preg_replace("/^Error: /", "Error: ", $line);
  
    // Save the log entry
    $log[$time][] = $line;
}

// Reverse the logs, so that we can see last errors first
$logs = array_reverse($log);

Piuttosto semplice, non è vero? Modificando un po' questo file, è possibile creare un parser per virtualmente qualunque tipo di log file.

Pubblicato in:trucchi segnalazioni miui

Sbloccare ed installare l'ultima MIUI in italiano su Xiaomi Redmi 4 PRO (forse vale anche per altri modelli)

09GEN2017

NOTE:

Questa guida nasce dall’esperienza e da altre guide trovate in rete, serve per sbloccare telefoni XIAOMI con versioni farlocche di MIUI, come la 8.0.4.0 LXKCNMA che avevo io, che non sono aggiornabili e sono spesso malfunzionanti (non mi stupirei se contenessero dei malware, ma non ne ho idea). Se tu avessi già una versione ufficiale di MIUI installata sul telefono, puoi seguire la guida partendo dalla sezione "sblocchiamo il telefono".

Questa procedura è quella che ho seguito io, passo dopo passo, per sbloccare il mio Redmi 4 PRO. Ha funzionato senza problemi e non vedo perché non dovrebbe farlo anche con te, ma non mi assumo responsabilità di alcun tipo nel caso qualcosa non andasse per il verso giusto smiley.

 

PREPARAZIONE:

PROCEDURA PER INSTALLARE UNA ROM UFFICIALE:

  • Nelle impostazioni del telefono / informazioni, clicca diverse volte sulla versione della miui finché non risponde che sei un developer.

  • Cerca developer options in Additional Settings, abilita USB debugging e OEM unlocking.

  • Collega il telefono al PC.

  • Installa i drivers PDAnet, consentendo tutto ciò che viene richiesto.

  • Apri una console nella directory in cui è salvato adb/fastboot, poi digita “adb devices”. Se tutto va bene, questo comando dovrebbe mostrare un codice.

  • Digita “adb reboot edl”.

  • Apri Mi Flash, seleziona la cartella relativa al file .tgz che hai scompattato precedentemente, e clicca il bottone “refresh”.

    • La lista dovrebe mostrare il tuo telefono e dirti che è collegato ad una porta COMx.

    • Clicca su Flash, e aspetta che finisca il tutto. Se non dovesse funzionare prova con un’altra porta usb o prova a ripetere le ultime operazioni, da “adb reboot edl”.

  • Quando il flash è terminato, tieni premuto il tasto di accensione ed il telefono si accenderà. Ci vorranno diversi minuti quindi mettiti comodo.

  • Connetti la rete wifi, ma salta pure gli altri passaggi (incluso il MI Account che per ora non serve).

  • Come prima, attiva la modalità developer, abilita USB debugging e OEM unlocking. Sotto la voce OEM unlocking è presente un’opzione per collegare il MI Account. Fallo da qua ed ignora eventuali errori (a meno che non sia la password errata :)).

  • Copia il file .zip della miui nella cartella principale della memoria del telefono.

  • OPZIONALE: Copia anche il file di SuperSU nella stessa cartella.

SBLOCCHIAMO IL TELEFONO

  • Spegni il telefono e riavvialo in modalità fastboot (VOL- e tasto di accensione)

  • Sul pc, apri Mi Unlock Tool, inserisci le tue credenziali e segui i passaggi per sbloccare il telefono. Nel caso in cui ti fosse capitato seguendo altre guide, ora non dovrebbe più inchiodarsi al 50%.

INSTALLIAMO LA RECOVERY TWRP

  • Sul pc, torna sul prompt dei comandi nella cartella di adb/fastboot, e digita “adb devices”. Dai il consenso per eventuali popup che dovessero presentarsi.

  • Riavvia il telefono in modalità fastboot (VOL- e tasto di accensione)

  • Sul pc, dal prompt dei comandi digita “fastboot flash recovery recovery.img”. Questa operazione dovrebbe richiedere pochi secondi. Digita poi “fastboot boot recovery.img

  • Il telefono si riavvierà con la nuova recovery TWRP. In cinese.

  • Se non conosci il cinese, limitati a flaggare la checkbox e fare lo slide sullo slider, poi clicca sul penultimo elemento in basso a destra. Nel menu in alto dovrebbe comparire un globo, cliccando quello puoi cambiare la lingua con quella che vuoi (consiglierei l’inglese, visto che le prossime istruzioni saranno in inglese)

INSTALLIAMO LA NOSTRA NUOVA ROM PREFERITA

  • Torna al menu principale di TWRP e clicca su “Wipe”. Conferma l’operazione con uno slide sullo slider.

  • Torna al menu principale e clicca su “Install”. Seleziona la rom che hai scaricato prima e seleziona “Flash”.

  • OPZIONALE: sempre dal menu Install, seleziona il pacchetto du SuperSU per avere il telefono con i permessi di root

  • Fai un wipe cache/dalvik

  • spegni il telefono tenendo premuto il tasto di accensione per parecchi secondi

  • Preparati ad aspettare circa 10 minuti per il primo avvio

FINE!

Pubblicato in:segnalazioni linux

Linux ed il trackpad malfunzionante su Asus X556UA

09GEN2017

Qualche giorno fa ho installato Ubuntu 16.10 su un portatile Asus X556UA. Tutto molto bello, molto stiloso, molto veloce (anche perché il portatile ha subìto l'upgrade a 12GB di ram e la sostituzione dell'hard disk con un SSD, facendolo diventare praticamente una scheggia). Il problema è che su alcuni portatili (tipo questo) il trackpad funziona in modo quantomeno discutibile: il puntatore schizza ovunque, lo scrolling non funziona e premere uno dei due tasti del trackpad significa spostare involontariamente il puntatore. Era quasi inutilizzabile.

Dopo un po' di ricerca mi sono imbattuto finalmente in un post in cui qualcuno, stufo della situazione e del fatto che Asus non intende rilasciare alcun driver per linux, si è scritto da solo un driver per far funzionare correttamente il trackpad.

Eccolo: https://github.com/vlasenko/hid-asus-dkms

I comandi per l'installazione sono scritti nella pagina, ma si tratta di un paio di comandi:

git clone https://github.com/vlasenko/hid-asus-dkms.git
cd hid-asus-dkms
sudo ./dkms-add.sh

Et voilà. Le modifiche sono immediate ed anche riavviando il portatile non dovrebbe più esserci alcun problema.

Finalmente!

Pubblicato in:segnalazioni

Aruba e iThemes Security per WordPress: MAI abilitare "Disable Directory Browsing"

10OTT2016

Se c'è una cosa in cui l'hosting di Aruba non fallisce mai, è sicuramente il creare inutili complicazioni: Non perde occasione per farlo.

Nella fattispecie, nel caso in cui tu stia utilizzando Wordpress ed il plugin iThemes Security per limitare i danni di questo fin troppo popolare CMS, potrebbe esserti già capitato che ad un certo punto, smanettando nelle opzioni del plugin di sicurezza, il sito inizi a rispondere con un laconico "errore 500". Risolvere è abbastanza semplice e se non si trattasse di Aruba lo sarebbe ancora di più, se non fosse per il ridicolo filtro sugli indirizzi ip di Aruba, che obbliga a cercare di districarsi nelle innumerevoli finestre aperte dal ridicolo pannello di controllo, che sembra arrivare dal passato senza aggiornamento alcuno.

Ad ogni modo, l'obiettivo è modificare il file `.htaccess`, presente nella directory principale del sito, ed eliminare queste due righe:

# Disable Directory Browsing - Security > Settings > System Tweaks > Directory Browsing
Options -Indexes

Una volta effettuata questa modifica, è sufficiente salvare il file .htaccess ed il sito dovrebbe tornare ad essere visibile.

Per evitare il problema in futuro, è necessario tenere sempre a mente che questa opzione, su aruba, è da tenere necessariamente disattivata: