web-dev-qa-db-fra.com

Comment activer PHP balises courtes?

J'ai une application Web sur un serveur Linux qui commence par <?

Je devais copier cette application dans un environnement Windows et tout fonctionne correctement, à l'exception du fait qu'une instruction SQL est rendue différemment. Je ne sais pas si cela concerne le script commençant par <?php au lieu de <?, car je ne sais pas d'où activer le <? à partir de PHP.ini donc je l'ai changé en <?php

Je sais que ces 2 instructions sont supposées vouloir dire la même chose, mais je dois le tester avec <? afin de s’assurer que l’application est exactement la même. De cette façon, je peux éliminer une autre possibilité.

Merci

301
seedg

Ensemble

short_open_tag=On

dans php.ini

Et redémarrez votre serveur Apache.

530
codaddict

Cela peut être fait en activant short_open_tag dans php.ini :

short_open_tag = on

Si vous n'avez pas accès au fichier php.ini, vous pouvez essayer de l'activer via le fichier . Htaccess mais il est possible que la société d'hébergement l'ait désactivé si vous êtes sur l'hébergement mutualisé:

php_value short_open_tag 1

Pour les personnes qui pensent que short_open_tags sont une mauvaise pratique à partir de PHP 5.4, le <?= ... ?> shorttag sera supporté partout , quels que soient les paramètres raison de ne pas les utiliser si vous pouvez contrôler les paramètres sur le serveur. Aussi dit dans ce lien: short_open_tag

75
RJD22

Cela peut être fait en activant short_open_tag dans php.ini:

1.Pour localiser le fichier php.ini, exécuter la ligne de commentaire

 php --ini

vous obtiendrez quelque chose comme ça,

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

Voir 2e ligne de la sortie du commentaire. Le fichier sera dans le chemin mentionné.

2.Ouvrez le fichier php.ini et trouvez short_open_tag. Par défaut, il est dans off changez-le en on.

3. Redémarrez le serveur, exécutez ce commentaire

service httpd restart

Merci

19
user2086641

Pour définir des balises courtes à ouvrir à partir d'un script d'installation Vagrant sous Ubuntu:

sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/Apache2/php.ini
18
Bradley Flood

Je peux voir que toutes les réponses ci-dessus ne sont que partiellement correctes. En réalité, toutes les applications 21st Century PHP auront FastCGI Process Manager (php-fpm). Une fois que vous avez ajouté php-info () dans votre script test.php et vérifié le chemin correct pour php.ini

Go to php.ini and set short_open_tag = On

IMPORTANT: vous devez ensuite redémarrer votre processus php-fpm pour que cela fonctionne!

Sudo service php-fpm restart

puis enfin redémarrez votre serveur nginx/http

Sudo service nginx restart
12
Eddy Ferreira

Aussi simple que cela, suivez les étapes suivantes:

  1. aller au fichier php.ini
  2. recherchez 'short_open_tag' et activez-le,
  3. redémarrer le serveur

oui, short_open_tag = On

10
Suresh KUMAR Mukhiya

vous devez activer short_open_tags.

short_open_tag = On
10
Jage

Dans CentOS 6 (testé également sur Centos 7), vous ne pouvez pas définir short_open_tag dans /etc/php.ini pour php-fpm. Vous aurez une erreur:

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

Vous devez modifier la configuration de votre site, qui peut être trouvée dans /etc/php-fpm.d/www.conf et écrire à la fin du fichier:

php_value[short_open_tag] =  On
9
XakRu

Si vous utilisez Ubuntu avec _Apache+php5_, dans les versions actuelles, vous devez remplacer 2 par _short_open_tag = On_

  1. _/etc/php5/Apache2/php.ini_ - ceci concerne les pages chargées via votre serveur Web (Apache)
  2. _/etc/php5/cli/php.ini_ - cette configuration est utilisée lorsque vous lancez vos fichiers php à partir de la ligne de commande, par exemple: _php yourscript.php_ - pour les fichiers php exécutés manuellement ou par cronjob directement sur le serveur.
7
Vladas Freimanas

si vous éditez votre fichier php.ini, pensez à redémarrer votre service (Apache2, etc.) pour que les modifications apportées à php.ini prennent effet

6
Steve Wasiura
; 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
5
Rhadley

Pour les utilisateurs de Wamp Server, il existe un moyen plus simple: vous pouvez activer ce paramètre en cliquant simplement (gauche) sur l’icône WampServer, choisissez PHP -> PHP paramètres -> une balise ouverte courte. Attendez une seconde, puis WampServer redémarrera automatiquement votre PHP ainsi que son service Web.

originellement de: http://osticket.com/forums/showthread.php?t=3149

5
Reza Ameri

Si vous utilisez xampp dans Windows, veuillez suivre les instructions suivantes

  1. Ouvrez le panneau de configuration XAMPP.
  2. Cliquez sur le bouton CONFIG.
  3. Allez à l’option PHP (php.ini).

Recherchez short_open_tag à l'aide de l'utilitaire ctrl + f

Vous trouverez ;short_open_tag

veuillez retirer le point-virgule (;) de la ligne.

et le garder comme short_open_tag = on

Enfin, redémarrez votre serveur Apache

1
Praful Rajput

si vous utilisez xampp, vous remarquerez que le fichier php.ini a mentionné à deux reprises short_open_tag. Activez le second pour short_open_tag = On. Le premier est mis en commentaire et vous pourriez être tenté de supprimer le commentaire et de le modifier, mais il est écrasé par un second short_open_tag.

1
Roger Gajraj
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php/7.2/Apache2/php.ini

Cela fonctionne sur php7.2 sur ubuntu 16, même réponse que ci-dessus par Bradley Flood, bien que le répertoire dans lequel le fichier de configuration est stocké ait changé.

Vous pouvez également modifier la version de la chaîne php pour qu'elle corresponde à la version actuellement installée.

0
Raymie

I'v a changé le short_open_tag à On sur mon instance aws centos 7 et php7 (PHP 7.0.33 (cli) (version: déc 6 2018 22:30:44) (NTS)), mais cela ne reflète pas la page d'informations php et le code. Je me réfère donc peut-être à la documentation et trouve une solution à mon cas. Ajouter une ligne supplémentaire après short_open_tag comme asp_tags = On après le redémarrage d'Apache Cela fonctionne sur le code et je passe correctement la sortie

fichier 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
0
bibinnaickenz

Pour activer short_open_tag pour un domaine particulier avec php-fpm, vous devez éditer:

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

Où xxxxx est le numéro de socket du domaine.

Et ajoutez: php_value [short_open_tag] = On

0
contremaitre