web-dev-qa-db-fra.com

<? ?> tags ne fonctionnant pas en php 5.3.1

Je viens d'installer php 5.3.1 sur mon serveur linux et maintenant mon ancien travail que j'écrivais avec des tags ne fonctionne pas du tout.

S'il vous plaît aidez-moi ... Comment puis-je résoudre ce problème?

32
dhvani

Pour activer les balises courtes, activez la directive short_open_tag ini de l’une des manières suivantes (elles ne fonctionneront probablement pas toutes pour vous):

  • définissez la directive short_open_tag = On dans votre php.ini (la méthode recommandée);
  • appelez ini_set("short_open_tag", 1); dans votre code;
  • ajoutez la ligne suivante à votre fichier .htaccess:

    php_value short_open_tag 1


Plus d'explication:

Il n'est pas recommandé d'utiliser des balises courtes (<? ?>). Vous devriez utiliser les balises pleine longueur (<?php ?>). La syntaxe abrégée est obsolète et si vous voulez rendre votre application portable, il est possible que les balises ouvertes courtes ne sont pas autorisées sur un autre serveur et, par conséquent, votre application sera interrompue.

D'autre part, le raccourci d'écho <?= $var ?> est activé par défaut depuis PHP 5.4 indépendamment des paramètres de php.ini et ne sera pas obsolète. Vous pouvez l'utiliser au lieu de <?php echo $var; ?>

Et pour le comportement par défaut:

------------------------------------------------
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

Et la raison de décourager les balises ouvertes courtes:

Cette directive détermine si PHP reconnaîtra ou non le code entre
Les balises <? et ?> en tant que source PHP qui doivent être traitées comme telles. C'était
recommandé depuis plusieurs années de ne pas utiliser la balise courte "raccourci" et
utilisez plutôt la combinaison complète de balises <?php et ?>. Avec l'utilisation répandue de XML et l’utilisation de ces balises par d’autres langues, le serveur peut devenir facilement
confus et finissent par analyser le mauvais code dans le mauvais contexte. Mais parce que
ce raccourci est une caractéristique depuis si longtemps qu'il est encore en cours
prise en charge pour la compatibilité ascendante, mais nous vous recommandons de ne pas les utiliser. 

Notez également cette RFC refusée concernant les balises ouvertes courtes pour les modèles: http://wiki.php.net/rfc/shortags

69
Felix Kling

Il semblerait que short_open_tags ait la valeur "Off" dans votre fichier php.ini . Essayez de la configurer "On" et redémarrez Apache.

10
Yo-L

Vous devrez probablement activer les balises courtes dans votre fichier de configuration PHP. Sans connaître votre configuration, je ne saurais dire où vous la trouverez, mais vous cherchez php.ini (probablement quelque part comme /etc/php.ini).

Ici, le paramètre que vous recherchez est short_open_tags. Voir ici pour tous les principaux paramètres de configuration de PHP. Toutefois, comme d'autres l'ont mentionné, l'utilisation de balises courtes pourrait ne pas être la meilleure stratégie. Ici est une bonne discussion des raisons (pour et contre).

1
Mark Embling

peut-être que votre nouvelle configuration n’allocalise pas les tags courts. Il suffit d'utiliser <?php ?>. C'est mieux de toute façon.

Si vous voulez toujours les utiliser, vous pouvez utiliser la directive short_open_tag. Gardez également à l'esprit que cela ne fonctionnera pas si vous avez désactivé les balises courtes.

La raison principale en est que vous pouvez utiliser des balises XML inline.

0
Sinan

Si vous utilisez wamp ou xamp, il est très facile de les activer . Il suffit de cliquer sur l'icône-> serveur php-> réglage-> autoriser l'ouverture d'un tag

Il vaut mieux ne pas utiliser cette fonctionnalité. Par exemple, XML utilise la même méthode pour ouvrir l’en-tête dans les documents.

0
Osin Toumani