PHP-5.3 attenti allo short tag '<?'
A partire dalla versione 5.3 di PHP lo short tag <? è disabilitato di default. Anche se di primo acchito sembra un problema di poco conto se non trattato con la giusta attenzione potrebbe trasformarsi in un bel guaio. Se infatti una certa porzione di codice non viene correttamente identificata come php questa viene semplicemente consegnata dal webserver, come apache per esempio, al browser che ne fa richiesta così com'è! State già pensando al peggio vero?
Fate bene... facciamo un esempio con uno snippet preso dalla documentazione ufficiale di MDB2 dove utilizzeremo lo short tag
<? require_once 'MDB2.php'; $dsn = 'pgsql://someuser:apasswd@localhost/thedb'; 'debug' => 2, 'result_buffering' => false, ); $mdb2 =& MDB2::factory($dsn, $options); if (PEAR::isError($mdb2)) { } // ... $mdb2->disconnect(); ?>
L'utente che si troverà ad aprire dal suo browser la pagina contenente questo codice visualizzerà senza problemi le credenziali di accesso al database utilizzato dalla vostra applicazione.
Il problema può essere facilmente risolto abilitando nuovamente lo short tag nelle impostazioni globali di php nel file php.ini con
short_open_tag On
oppure localmente nel file .htaccess (se vi è consentito) con qualcosa del genere
<IfModule mod_php5.c> php_value short_open_tag 1 </IfModule>
Il mio consiglio è comunque quello di sostituire lo short tag <? con <?php nelle vostre applicazioni esistenti e di prenderlo come abitudine per le future evitando così spiacevoli inconvenienti in fase di deploy.

commenti
7 settimane 3 giorni
registered linux user #401781 - machine number #304836 - counter.li.org
15 settimane 2 giorni