2010-03-19 11 views
31

Ho appena installato PHP 5.3.1 nel mio server Linux e ora il mio vecchio lavoro, che ho usato per scrivere con i tag non funziona a tutti ..<? ?> tag non funziona in PHP 5.3.1

Please help me out .. Come posso risolvere questo ??

+0

[risolto] http://php999.blogspot.in/2015/05/how-to-enable-php-short-tags.html ----- CONTROLLA IMMAGINE ----- – indian

risposta

67

Per attivare i tag brevi, attivare l'short_open_tag direttiva ini in uno dei seguenti modi (molto probabilmente non tutti di loro lavorerà per voi):

  • impostare la direttiva short_open_tag = On nel tuo php.ini (il modo consigliato);
  • chiamare ini_set("short_open_tag", 1); nel codice;
  • aggiungere la seguente riga al file .htaccess:

    php_value short_open_tag 1


Più spiegazione:

Non è consiglia di utilizzare tag brevi (<? ?>). È necessario utilizzare i tag di lunghezza completa (<?php ?>). La sintassi breve è deprecata e, se si desidera rendere portatile l'applicazione, è possibile che tag aperti non siano consentiti su un altro server e quindi l'applicazione si interromperà.

D'altra parte, l'abbreviazione eco <?= $var ?> è enabled by default since PHP 5.4 regardless of php.ini settings e non verrà ritirato. Si può usare al posto di <?php echo $var; ?>

E per il comportamento di default:

------------------------------------------------ 
php.ini values : short_open_tag 
------------------------------------------------ 

PHP 4, 5_0 
* Default behaviour : on 
* php.ini-dist  : on 
* php.ini-recommended : on 

PHP 5_1, 5_2: 
* Default behaviour : on 
* php.ini-dist  : on 
* php.ini-recommended : off 

PHP 5_3: 
* Default behaviour : on 
* php.ini-development : off 
* php.ini-production : off 

E la ragione di scoraggiare tag brevi aperte:

Questa direttiva determina se il PHP riconoscerà codice tra
<? e ?> tag come origine PHP che devono essere elaborati come tali. È stato
consigliato per diversi anni che non si utilizzi il tag breve "scorciatoia" e
invece di utilizzare la combinazione di tag completa <?php e ?>. Con l'ampia diffusione di di XML e l'uso di questi tag da altre lingue, il server può diventare facilmente
confuso e finire con l'analisi del codice sbagliato nel contesto sbagliato. Ma perché
questa scorciatoia è stata una caratteristica per così tanto tempo, è attualmente ancora
supportata per compatibilità con le versioni precedenti, ma ti consigliamo di non usarli.

Nota anche questo ha rifiutato RFC su brevi tag aperti per i modelli: http://wiki.php.net/rfc/shortags

+0

Secondo http : //php.net/manual/en/ini.core.php, il valore predefinito è "1", che mi sembra abilitato. Mi aspetto che sia disabilitato di default, però. – OregonGhost

+0

@OregonGhost: ecco come descritto qui: http: //stackoverflow.com/questions/1386620/php-echo-vs-php-short-tags * In realtà, nel file php.ini-production fornito con PHP 5.3.0, sono disabilitati per impostazione predefinita * Suppongo che dalla versione 5.3 sia disattivato per impostazione predefinita. –

+0

@OregonGhost: si è corretti, ma quasi sempre viene fornita una configurazione di esempio che sovrascriverà i valori predefiniti incorporati e sceglierà le impostazioni appropriate. Credo che php.ini-raccomandato li imposta su off (anche se non poteva essere certo senza controllare). –

0

forse la nuova configurazione doesnt alllow tag brevi. Basta usare <?php ?>. È comunque una buona pratica.

Se si desidera ancora utilizzarli è possibile la direttiva short_open_tag. Ricorda inoltre che non funzionerà se hai disabilitato i tag brevi.

Il motivo principale per questo è che è possibile utilizzare tag Xml in linea.

+1

Non molto per una ragione. –

+3

In realtà se il tuo codice verrà eseguito su altri server che non hai il controllo. L'utilizzo di garantisce la portabilità. – Sinan

+0

Questo * può * essere un motivo. Ma per il proprio giudizio, non una raccomandazione severa. E in realtà la maggior parte del codice non è scritta per esteso. E c'è una vasta scelta di sistemi di template. E se qualcuno usa PHP come sistema di template, usare tag lunghi è semplicemente ridicolo. Basta scegliere un altro sistema di template e dimenticare questa domanda a tutti –

10

Sembra che tu abbia short_open_tags impostato su "Off" nel tuo file php.ini. Prova a impostarlo su "On" e riavvia apache.

1

Molto probabilmente è necessario attivare i tag brevi nel file di configurazione di PHP. Senza conoscere la tua configurazione, non saprei dire dove lo troverai, ma stai cercando php.ini (molto probabilmente da qualche parte come /etc/php.ini).

Qui, l'impostazione che si desidera è short_open_tags. Vedi here per tutte le impostazioni di configurazione di base per PHP. Tuttavia, come altri hanno menzionato, l'uso di tag brevi potrebbe non essere la migliore strategia. Here è una buona discussione dei motivi (a favore e contro).

+0

Buona discussione con false ragioni. –

+1

@Col. Shrapnel: come mai? Tendo a preferire sempre tag lunghi su tag brevi per alcune delle ragioni qui descritte. Per essere onesti, penso che sia almeno parzialmente in linea con le preferenze personali. Finché sei consapevole delle implicazioni in ogni caso, puoi usare quello che vuoi. –

+0

Non sto parlando delle preferenze di codifica ora, sto parlando di false voci. –

0

Se si utilizza wamp o xamp, è molto facile attivarli. Basta fare clic su icona-> server php-> impostazioni-> consentire tag breve aperto

È meglio non utilizzare questa funzionalità. Ad esempio xml usa lo stesso metodo per aprire l'intestazione nei documenti.

Problemi correlati