Skip to main content

WordPress – Catchable fatal error: Object of class WP_Error could not be converted to string – Come risolvere

L’11 giugno 2017 questo sito ha subito un downtime di diverse ore a causa di un errore piuttosto strano verificatosi all’interno del database di WordPress. Se vi siete imbattuti in questo articolo è molto probabile che il vostro sito sia stato colpito dalla medesima problematica. Se le cose stanno così, siete finiti nel posto giusto: farò del nostro meglio per aiutarvi a risolvere raccontandovi la mia esperienza.

Dal punto di vista dell’utente, l’anomalia si presentava come un classico errore HTTP 500 – Application Error che bloccava tutte le pagine non servite tramite cache. Come sempre in questi casi la prima cosa che ho fatto è stata abilitare gli appositi switch WP_DEBUG e WP_DEBUG_LOG presenti all’interno del file wp-config.php, che – come probabilmente sanno molti lettori – si trova nella cartella principale di WordPress contiene tutti i parametri di configurazione principali dell’installazione in uso.

Come si può facilmente evincere dai commenti, il primo switch inserisce l’errore all’interno del HTTP response così da consentire all’utente di visualizzarlo on-screen, mentre il secondo – più sicuro – si limita a scriverlo all’interno di un file debug.log dedicato, anch’esso presente nella cartella principale di WordPress.

Questo era l’errore riportato:

Catchable fatal error: Object of class WP_Error could not be converted to string in /var/www/ryadel.com\wp-includes\rewrite.php on line 326

Sfortunatamente questa informazione non era sufficiente a comprendere cosa fosse davvero successo, ma se non altro puntava in una direzione chiara: ho quindi dato un’occhiata al codice sorgente del rewrite.php, fino a imbattermi nella seguente funzione (la linea 326 è quella evidenziata):

Approfondisci

PHP – Come disabilitare la visualizzazione e il log degli errori da codice

Ogni sviluppatore, amministratore di sistema o webmaster che lavori o abbia lavorato con PHP conosce perfettamente che il metodo migliore per effettuare un debug rapido su uno script o pagina realizzata con il popolare Hypertext Preprocessor  è quello di impostare i valori opportuni delle direttive error_reportingdisplay_errors e/o log_errors contenute all’interno del file PHP.INI.

Ecco un tipico esempio di configurazione per un web server di produzione:

Approfondisci

PHP – Come risolvere l’errore “Warning: preg_replace(): The /e modifier is no longer supported” in PHP 7

In questo articolo parleremo di uno dei classici errori che si verificano quando si tenta l’upgrade da PHP5.x a PHP7:

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead

Nonostante il problema in questione sia ben documentato nella documentazione ufficiale di PHP (l’utilizzo del modificatore /e  è deprecato fin dalla release 5.5 e non più supportato dalla 7.0.0 in poi), il warning di cui sopra resta uno dei più complessi da affrontare, principalmente perché non esiste un workaround valido per tutte le situazioni: il modo migliore di procedere è, ovviamente, quello suggerito dalla documentazione: procedere a una re-implementazione del codice, utilizzando la funzione preg_replace_callback in luogo del modificatore /e: sfortunatamente nella maggior parte dei casi non si tratta di un lavoro semplice, perché la funzione preg_replace è presente in numerosissimi script PHP di terze parti che è particolarmente scomodo modificare.

In questo articolo proveremo a documentare tre diversi metodi che sono stati messi a punto dalla community internazionale per risolvere il problema in modo soddisfacente: sentitevi liberi di scegliere quello che meglio si presta al vostro scenario specifico.

Approfondisci

ASP.NET Core: Cloud-ready, Enterprise Web Application Development – Il Libro

Sia pure con un ritardo di alcune settimane per ragioni di distribuzione è finalmente disponibile l’edizione Learning Paths del mio libro dedicato allo sviluppo di applicazioni web con ASP.NET Core e Angular: il titolo è ASP.NET Core: Cloud-ready, Enterprise Web Application Development e si inserisce nella collana dell’editore britannico Packt Publishing dedicata a corsi avanzati di sviluppo software strutturati attraverso percorsi di apprendimento che prevedono l’utilizzo combinato di diverse tecnologie.

Inutile dire che il libro in questione riguarda lo sviluppo full-stack di applicazioni web con ASP.NET Core MVC e Angular, attraverso un percorso che ha inizio con la creazione del progetto, prosegue con le interazioni client-server e si conclude con un approfondimento delle varie tecniche e strategie di ottimizzazione e performance-monitoring prima e dopo il deploy.

Questa è la versione definitiva della copertina:

Approfondisci

PasswordCheck – Classe C# per calcolare il livello di sicurezza delle password

Diversi anni fa ho sviluppato questa classe per calcolare il livello di sicurezza delle password inserite dagli utenti in varie circostanze, come ad esempio durante la registrazione di un nuovo account all’interno di una applicazione web. Poiché a distanza di tempo continuo a utilizzarla con regolarità ho deciso oggi di condividerla all’interno di questo post, sperando che possa essere utile anche a qualcun altro.

La classe può essere utilizzata in due modi:

  • Attraverso il metodo generico GetPasswordStrength, che calcola il livello di sicurezza (strength) di una qualsiasi password attraverso una serie di controlli basati sui classici fattori: lunghezza minima, presenza di lettere maiuscole/minuscole, numeri e/o caratteri speciali.
  • Attraverso il metodo IsStrongPassword, che risponde a un criterio più specifico e personalizzato.

Il primo metodo di utilizzo è particolarmente indicato in tutti i casi in cui non sono previste delle policy di controllo specifiche, mentre il secondo si rende necessario ogniqualvolta abbiamo dei controlli obbligatori da effettuare. Personalmente io finisco spesso per utilizzare entrambi: il primo per mostrare all’utente la forza della propria password, il secondo – o una sua implementazione leggermente diversa utilizzando gli helper methods inclusi – per controllare i requisiti minimi previsti e/o richiesti dal committente.

Tutti i metodi utilizzati sono spiegati all’interno della classe, quindi non c’è molto altro da dire: se la classe vi è di qualche aiuto, sentitevi liberi di lasciare un feedback nella sezione “commenti” in basso!

Approfondisci

Close