Come abilitare i tag brevi PHP?


324

Ho un'applicazione web su un server Linux che inizia con <?

Avevo bisogno di copiare questa applicazione in un ambiente Windows e tutto funziona bene tranne che un'istruzione SQL viene visualizzata in modo diverso. Non so se questo abbia a che fare con lo script che inizia <?phpinvece che <?perché non so da dove abilitare il <?da, PHP.iniquindi l'ho cambiato in<?php

So che queste 2 affermazioni dovrebbero significare lo stesso, ma devo provarlo <?per assicurarmi che l'applicazione sia esattamente la stessa. In questo modo posso eliminare un'altra possibilità.

Grazie



Tuttavia, la storia è ancora in fase di sviluppo . Rimanete sintonizzati. :)
vescovo

Risposte:


559

Impostato

short_open_tag=On

in php.ini

E riavvia il tuo server Apache.


54
Se PHP funziona come modulo Apache, puoi anche impostarlo in un file .htaccess: php_flag short_open_tag on
Álvaro González

12
Molto flessibile/etc/php5/apache2/php.ini
Benjamin Crouzier,

@pinouchon, seedeg ha scritto che si trasferisce su Windows, ma il tuo commento mi aiuta :)
Linea

7
Usa php --iniper localizzare il file di configurazione caricato (File di configurazione caricato: /etc/php5/cli/php.ini)
Wietse,

Se si utilizza xampp in Windows, aprire il pannello di controllo XAMPP, fare clic sul pulsante CONFIG e selezionare l'opzione PHP (php.ini).
Praful Rajput,

80

Questo può essere fatto abilitando short_open_tag in php.ini :

short_open_tag = on

Se non hai accesso a php.ini puoi provare ad abilitarli attraverso il file .htaccess ma è possibile che la società di hosting lo abbia disabilitato se sei su hosting condiviso:

php_value short_open_tag 1

Per le persone che pensano che short_open_tags siano cattive pratiche a partire da php 5.4 il <?= ... ?>shorttag sarà supportato ovunque , indipendentemente dalle impostazioni, quindi non c'è motivo di non usarle se è possibile controllare le impostazioni sul server. Detto anche in questo link: short_open_tag


5
I tag aperti brevi non sono necessariamente una cattiva pratica (sto cercando di mantenere una mente aperta qui) ma solo perché Rasmus et al. deciso di fornire supporto predefinito per loro in PHP5.4 non fornisce giustificazione per il loro utilizzo. Il loro utilizzo potrebbe creare una dipendenza indesiderabile in seguito o causare confusione con XML. Qualche buona discussione qui: stackoverflow.com/questions/200640/…
Ian Lewis,

1
Ian. Non stiamo parlando <? echo $var ?>del tag aperto breve ma <?= $var ?>del tag aperto breve. Afaik XML non dovrebbe essere interessato.
RJD22,

Abbiamo un test di codifica PHP e occasionalmente riceviamo invii in cui è stato utilizzato il tag <? = Short. Purtroppo il presupposto che questo stile sia in uso ovunque è un po 'ingenuo e spesso viene dagli sviluppatori cresciuti con una dieta di ASP. Chiaramente è disponibile ma il suo utilizzo è una micro-ottimizzazione e fallirà per motivi di portabilità, il che è un peccato.
Ian Lewis,

6
@IanLewis Non sono d'accordo. Il tag breve PHP non ha nulla a che fare con ASP. Il miglior motivo per cui vorresti usare <?= è per il templating e penso che sia abbastanza valido. Anche altri linguaggi di template come i baffi usano tag semplici e brevi {{var}}. PHP è spesso usato come linguaggio di template e il fare <?php echo $var ?>è molto più brutto che <?=$var?>in HTML in linea.
RJD22

È un dibattito interessante e diventa altamente soggettivo, non credo che il bel codice sia necessariamente migliore del codice che mostra un po 'della bruttezza intrinseca. La mia opinione qui è che la versione <? = $ Var?> Sembra molto più affollata e molto meno leggibile della versione più aperta, ma più lunga. Il collegamento con ASP deve essere una percezione comune, quindi come molti sviluppatori conosco tutti fanno lo stesso collegamento senza chiedere conferma.
Ian Lewis,

19

Questo può essere fatto abilitando short_open_tag in php.ini:

1.Per individuare il file php.ini, eseguire sulla riga di commento

 php --ini

otterrai qualcosa del genere,

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/json.ini,
/etc/php.d/mcrypt.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/zip.ini

Vedere la seconda riga dell'output del commento. Il file si troverà nel percorso indicato.

2.Aprire il file php.ini e trovare short_open_tag. Di default è offcambiarlo in on.

3. Riavviare il server, eseguire questo commento

service httpd restart

Grazie


18

Per impostare tag brevi da aprire da uno script di installazione di Vagrant su Ubuntu:

sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/apache2/php.ini

12

Vedo che tutte le risposte sopra sono solo parzialmente corrette. In realtà tutte le app PHP del 21 ° secolo avranno FastCGI Process Manager (php-fpm), quindi una volta aggiunto php-info () nello script test.php e verificato il percorso corretto per php.ini

Go to php.ini and set short_open_tag = On

IMPORTANTE: quindi è necessario riavviare il processo php-fpm in modo che possa funzionare!

sudo service php-fpm restart

e infine riavviare il server nginx / http

sudo service nginx restart

2
In My Case: sudo service php7.0-fpm restart
Sampath Perera

Il servizio sudo php-fpm restart funzionerà con qualsiasi versione predefinita di PHP installata sulla confezione, a meno che tu non abbia più versioni nel qual caso devi specificare la versione a cui ti riferisci
Eddy Ferreira

1
Il riavvio di nginx non ha funzionato solo per me. In effetti, la funzione phpini () ha continuato a mostrare short_open_tag come Off. Ho appena riavviato il server e ha funzionato. Tipo di drastico, ma ancora più veloce della ricerca perché ...
Fran Marzoa,

10

devi attivare short_open_tags.

short_open_tag = On

10

Semplice, segui i seguenti passi:

  1. Vai al php.inifile
  2. Trova short_open_tage impostalo suon

    short_open_tag = On
  3. Riavvia il server


9

In CentOS 6 (testato anche su Centos 7) non è possibile impostare short_open_tag in /etc/php.ini per php-fpm. Avrai un errore:

ERROR: [/etc/php.ini:159] unknown entry 'short_open_tag'
ERROR: Unable to include /etc/php.ini from /etc/php-fpm.conf at line 159
ERROR: failed to load configuration file '/etc/php-fpm.conf'
ERROR: FPM initialization failed

Devi modificare la configurazione del tuo sito, che si trova in /etc/php-fpm.d/www.conf e scrivere alla fine del file:

php_value[short_open_tag] =  On

Ho dovuto farlo su una Debian Jessie. Questo potrebbe applicarsi effettivamente a tutte le installazioni di PHP5-FPM.
Bertrand,

7

Se si utilizza Ubuntucon Apache+php5, nelle versioni correnti ci sono 2 posti in cui è necessario cambiareshort_open_tag = On

  1. /etc/php5/apache2/php.ini - questo è per le pagine caricate attraverso il tuo server web (Apache)
  2. /etc/php5/cli/php.ini- questa configurazione viene utilizzata quando avvii i tuoi file php dalla riga di comando, come: php yourscript.php- vale per i file php eseguiti manualmente o cronjob direttamente sul server.

6

se modifichi il tuo file php.ini, ricorda di riavviare il servizio (apache2, ecc.) affinché le modifiche a php.ini abbiano effetto


5

Per gli utenti di Wamp Server c'è un modo più semplice: puoi abilitare quell'impostazione semplicemente (a sinistra) facendo clic una volta sull'icona WampServer, scegli PHP -> Impostazioni PHP -> tag aperto breve. Aspetta un secondo, quindi WampServer riavvierà automaticamente il tuo PHP e anche il suo servizio web.

originariamente da: http://osticket.com/forums/showthread.php?t=3149


5
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
;short_open_tag=Off   <--Comment this out
; XAMPP for Linux is currently old fashioned
short_open_tag = On   <--Uncomment this

1

se usi xampp, noterai che il file php.ini ha menzionato due volte short_open_tag. Abilita il secondo a short_open_tag = On. Il primo è commentato e potresti essere tentato di commentare e modificarlo, ma è sovrastato da un secondo short_open_tag


1

Se stai usando xampp in Windows, ti preghiamo di fare quanto segue

  1. Apri il pannello di controllo di XAMPP.
  2. Fare clic sul pulsante CONFIG.
  3. Vai all'opzione PHP (php.ini).

Trova short_open_tag utilizzando l'utilità ctrl + f

Lo troverai ;short_open_tag

rimuovere gentilmente il punto e virgola (;) dalla riga.

e tenerlo come short_open_tag = on

Infine, riavvia il server Apache


0

Per abilitare short_open_tag per un determinato dominio con php-fpm, è necessario modificare:

/etc/php5/fpm/pool.d/xxxxxxxxxx.conf

Dove xxxxx è il numero socket del dominio.

E aggiungi: php_value [short_open_tag] = On


0
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php/7.2/apache2/php.ini

Funziona su php7.2 su Ubuntu 16, stessa risposta di Bradley Flood, anche se la directory in cui è memorizzato il file di configurazione è cambiata.

Inoltre puoi cambiare la versione nella stringa php in modo che corrisponda alla versione attualmente installata.



-2

Ho cambiato Short_open_tag da Off a On sulla mia istanza aws centos 7 e php7 (PHP 7.0.33 (cli) (costruito: 6 dic 2018 22:30:44) (NTS)), ma non riflette la pagina di informazioni php e il codice. Quindi mi riferisco a documenti e trovo una soluzione sul mio caso. Aggiungi una riga in più dopo short_open_tag as asp_tags = Attivo dopo quel riavvio Apache Funziona sul codice e vado correttamente all'output

file php.ini

engine = On

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It is
; generally recommended that <?php and ?> should be used and that this feature
; should be disabled, as enabling it may result in issues when generating XML
; documents, however this remains supported for backward compatibility reasons.
; Note that this directive does not control the <?= shorthand tag, which can be
; used regardless of this directive. 
; Default Value: On   
; Development Value: Off     
; Production Value: Off  
; http://php.net/short-open-tag

short_open_tag = On

; Allow ASP-style <% %> tags   
; http://php.net/asp-tags
asp_tags = On

-5

Impostare la asp_tags = One short_open_tag = Onin entrambi i file \apache\Apache2.2.21\bin\php.inie \bin\php\php5.3.8\php.ini quindi riavviare il server Apache.


6
asp_tags? per che cosa?
Il tuo senso comune

1
asp è probabilmente un errore di battitura. Perché la community non può mostrare solo un po 'di pietà per @kal?
n8bar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.