[wordpress] Got error ‘PHP message: PHP Fatal error: Unknown: Cannot use output buffering in output buffering display handlers in Unknown on line 0\n’

Problema: WordPress risulta bloccato on errore Server Error 500 oppure (nel registro degli errori) con Got error ‘PHP message: PHP Fatal error: Unknown: Cannot use output buffering in output buffering display handlers in Unknown on line 0\n’

Questo problema potrebbe dipendere dalla configurazione della cache internamente a WordPress oppure da qualche plugin ad essa collegato. In generale l’errore si risolve modificando il file wp-config.php

Aprile il file e aggiungiamo, oppure modifichiamo se già esiste, la seguente riga:

In questo modo aumenteremo la memoria a disposizione della piattaforma per gestire la cache e il problema dovrebbe risultare risolto.

Vedi articolo

[WordPress] Creare un’area widget personalizzata in 6 semplici passaggi

Le aree dei widget in WordPress dipendono sempre dal template utilizzato, quindi per aggiungere un’area widget personalizzata bisogna modificare il template specifico che ci interessa.

Prima di cominciare procuriamoci tutto il necessario:

  1. Avere installato WordPress (lo si può scaricare da qui)
  2. Utilizziamo il template Twenty Sixteen (ricordo che la procedura è valida per qualunque template)

Se abbiamo tutto pronto cominciamo.

1. Apriamo l’editor di WordPress

L’editor si trova in Bacheca > Aspetto > Editor.

2. Andiamo su functions.php

Una volta aperto l’editor andiamo su functions.php, selezionabile dall’elenco a destra.

A questo punto spostiamoci in fondo al file e aggiungiamo il seguente codice:

Faccio notare come il nome della funzione, nuovo_widget(), è assolutamente arbitrario, purché rispetti i parametri di programmazione in PHP.

Dentro eseguiamo il metodo register_sidebar che permette di definire una specifica sidebar.

I parametri passabili tramite array sono:

  • name – il nome della sidebar, un testo descrittivo
  • description – la descrizione della sidebar, che apparirà sotto il suo nome nella bacheca, non è obbligatorio
  • id – identificativo della sidebar, deve essere tutto minuscolo e senza spazi, di predefinito è un valore numerico intero autoincrementale
  • before_widget – codice HTML da anteporre ad ogni widget
  • after_widget – codice HTML da posporre ad ogni widget
  • before_title – codice HTML da anteporre ad ogni titolo di widget
  • after_title – codice HTML da posporre ad ogni titolo di widget

Una volta aggiunto il codice premiamo su Aggiorna file.

3. Andiamo su page.php

Adesso aggiungiamo il widget in tutte le posizioni che desideriamo. Nel nostro caso lo aggiungeremo sul lato sinistro di tutte le pagine, modificabili da file page.php

Andiamo quindi a modificare il file page.php

Individuiamo la riga con get_header(); e posizioniamoci alla riga successiva aggiungendo il seguente codice:

Ricordiamoci che nuova-sidebar è l’ID che abbiamo definito prima per la nostra sidebar, mentre la classe barra-sinistra la dovremo ancora definire.

Individuiamo la riga con:

E modifichiamola nel modo seguente:

In questo modo il contenitore principale sarà modificato in base alla presenza o meno del widget. La situazione di partenza era questa:

Noi vogliamo arrivare ad una nuova situazione simile a questa:

4. Modifichiamo il style.css

Adesso non ci resta che aggiungere gli stili appena utilizzati. Andiamo quindi a modificare il Foglio di stile (style.css)

In fondo al file aggiungiamo le seguenti due righe di CSS (queste sono molto essenziali, per ottenere un risultato migliore bisognerebbe rielaborarle un po’).

Salviamo il file.

5. Andiamo sui Widget

Adesso è il momento di testare il nostro nuovo widget, spostiamoci perciò nei widget ed inseriamo nella nuova area, per esempio, il widget per la ricerca.

6. Risultato

A questo punto possiamo aprire il nostro sito e verificare il risultato, che dovrebbe apparire così.

Vedi articolo

[php] Interroghiamo un database MySQL su cluster mediante il PHP

Obiettivo: anzitutto creiamo una classe per mediare la connessione MySQL (con o senza cluster è indifferente) e testiamo il cluster MySQL creato nell’esercizio precedente

Per realizzare il nostro scopo avviamo un server apache sulla nostra macchina host, dove abbiamo già avviato 3 macchine virtuali che costituiscono il nostro MySQL Cluster.

Per avviare il server apache mi avvarrò di XAMPP.

Inoltre prima di procedere devo inoltrare la porta 3306 verso il MySQL Cluster Manager che ho configurato in precedenza. Per farlo mi è sufficiente spostarmi in File ⇒ Preferenze ⇒ Rete

Selezioniamo la nostra Rete NAT corrispondente al cluster che abbiamo realizzato e andiamo a configurare l’inoltro delle porte, per ottenere qualcosa di simile a questo:

A questo punto andiamo nel nostro PHP. Creiamo anzitutto un file /inc/MySQLDb.php contenente il seguente codice:

Andiamo adesso a creare il nostro file index.php:

Eseguendo la pagina index.php è molto probabile incorrere nel seguente output di errori:

Questo tipo di errore può dipendere o dal fatto che stiamo richiedendo una query troppo grossa, oppure perché il nostro Server MySQL non è predisposto per accettare le connessioni dall’esterno.

Per risolvere il problema procediamo nel modo seguente.

Anzitutto creiamo un utente apposito con il quale ci collegheremo dall’esterno (nel mio caso gli garantirò tutti i permessi possibili su tutti i database, ovviamente andrebbe limitato ad uno specifico database).

Accediamo al mysql sul nostro cluster manager digitando:

Inseriamo la password di root e poi eseguiamo le seguenti due query per creare l’utente zelda:

Faccio notare che con ‘zelda’@’192.168.56.1’ garantiamo l’accesso all’utente zelda dall’indirizzo 192.168.56.1 che è l’indirizzo esterno della nostra rete NAT su Virtual Box.

Digitiamo exit per uscire e andiamo a modificare il file di configurazione del mysql:

Cerchiamo la voce bind-address e commentiamola in modo che risulti in questo modo:

Infine modifichiamo anche il file /etc/mysql/my.cnf

Inseriamo in fondo max_allowed_packet=16M in modo tale che il file risulti così

Quest’ultima modifica è di solito sufficiente per correggere il precedente errore, se dovesse ripresentarsi possiamo alzare ancora questo valore.

Fatto tutto questo riavviamo il servizio mysql digitando:

Se abbiamo fatto tutto bene non ci saranno errori.

A questo punto modifichiamo il file index.php di sopra perché appaia in questo modo:

Eseguendo la pagina dovremmo vedere qualcosa di simile a questo:

Questo significa che è tutto andato correttamente. A questo punto divertiamoci ad inserire qualche altro utente e generare una tabella con HTML corretto. Modifichiamo il file PHP come segue:

Il risultato, aggiornando la pagina, dovrebbe essere simile a questo:

Infine facciamo una prova per caricare di dati il nostro cluster.

Modifichiamo il file index.php alterando la parte dell’inserimento degli utenti come segue:

Prima di aggiornare la pagina andiamo nel nostro cluster manager e digitiamo:

Quello che dovremmo vedere sarà un risultato simile a questo:

Inserendo 10.000 record, con il precedente script, dovremmo vedere questa “importante” differenza:

Vedi articolo

Labirinto disegnato in PHP

Per gli appassionati di Pathfinder come me capita di fare il master e voler proporre qualche simpatico labirinto ai propri avventurieri. Online si trovano già moltissimi generatori di dungeon, però ho deciso di svagarmi un po’ questo sabato pomeriggio creando uno tutto mio in PHP.

Questo è il risultato (si rigenera ad ogni refresh della pagina):

Vediamo il codice sufficiente per ottenerlo:

Le impostazioni nell’esempio sono le medesime per ottenere l’immagine di sopra.

Vedi articolo

Calcolare indirizzo IP e rete in PHP

In rete si trovano già numerosi calcolatori di indirizzi IP e rete, come per esempio questo oppure questo.

Prendendo spunto da essi ecco una classe in PHP per ottenere i medesimi risultati. Lo scopo principale in questo caso è utilizzare le operazioni binarie in PHP per calcolare i vari valori di ID Rete, Subnet mask, ecc.

Ecco di seguito un esempio di utilizzo:

 

Vedi articolo