Sostituire in massa gli “short tags” di PHP

Trasferendo un sito in PHP da un server all’altro potrebbe capitarvi una problematica che oggi non ho saputo individuare all’istante.  L’errore che avevo sul nuovo server infatti era il generico:

Parse error: syntax error, unexpected end of file in the line...

Dato che dal giorno del trasferimento a quello della segnalazione era già passata una settimana, ho pensato ad una modifica maldestra dei file. Invece googlando l’errore già citato assieme al nome del plugin WordPress coinvolto ho trovato un commento illuminante che mi ha portato alla soluzione: la direttiva short_open_tag di PHP disabilitata. Un bel giorno infatti qualcuno decise che a scrivere


si perdeva troppo tempo, e che


era sufficiente. Tuttavia questa forma "breve" poteva creare confusione con i documenti XML, che iniziano in questo modo:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

Ecco perché tutte le versioni più recenti di PHP hanno questa famigerata direttiva disabilitata. Ed ecco perché io ho resistito dalla facile tentazione di abilitarla optando invece per una sostituzione multipla che risolve il problema una volta per sempre. Posizionandomi sulla root del sito ho dato questi comandi in successione (sicuramente ottimizzabili)

find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/<\? /<?php /g'
find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/<\?= /<?php echo /g'
find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/<\?\n/<?php\n/g'
find . -type f -name "*.php" -print0 | xargs -0 perl -pi.bak -e 's/<\?\r\n/<?php\r\n/g'

Questi comandi creano anche dei file di backup, che al termine delle operazioni possono essere eliminati così:

find -name "*.php.bak" -delete

Leave a Comment

%d blogger hanno fatto clic su Mi Piace per questo:

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi