3 votes

PHP short_open_tag ne s'active pas (CentOS 6)

Je suis en train de mettre en place un serveur Apache2, PHP 5.3.3 fonctionnant sous CentOS 6. Mon application web utilise les balises courtes <? y <?= . Je ne parviens pas à activer les balises courtes. Lorsque je lance phpinfo() Je vois. short_open_tag = off Toutefois, en /etc/php.ini J'ai ça : short_open_tag = on (et oui, j'ai redémarré le serveur).

J'ai également essayé d'utiliser <?php ini_set('short_open_tag','1'); ?> au début d'une page et il n'analyse toujours pas le code dans les balises courtes.

La seule chose à laquelle je pense est qu'il y a un autre php.ini quelque part, qui est utilisé à la place de celui qui se trouve à l'adresse /etc/php.ini .

Des conseils ?

2voto

user9517 Points 113163

J'ai un système CentOS 6.3 assez standard avec PHP 5.3.3 à portée de main et cela fonctionne comme prévu. En changeant la valeur de short_open_tags dans /etc/php.ini et en redémarrant le service httpd, cela fonctionne.

PHP lit également les fichiers dans /etc/php.d donc vérifiez qu'elle n'est pas remplacée par l'une d'entre elles.

Si vous voulez vérifier d'autres fichiers php.ini, alors

find / -name php.ini 

Pour plus d'informations, la valeur de short_open_tag peut également être définie dans un fichier .htaccess.

php_value short_open_tag On

2voto

N.S. Points 111

Il est fort probable que vous ayez activé eAccelerator ou quelque chose de similaire. Les pages précompilées ne sont pas traitées, il suffit donc de vider le cache d'eAccelerator, ou (vilain) de désinstaller eAccelerator, de redémarrer Apache, de réinstaller eAccelerator, de redémarrer Apache

1voto

OliBlogger Points 805

Veillez également à ce que

  • ノー .htaccess sur le chemin de votre script contient short_open_tag une directive qui pourrait être contradictoire (dans mon cas ce fichier dans le répertoire de niveau supérieur était la source du problème)

1voto

user229115 Points 181

Je peux voir que toutes les réponses ci-dessus sont partiellement correctes seulement. En réalité, toutes les applications PHP du 21ème siècle ont un gestionnaire de processus FastCGI (php-fpm), donc une fois que vous avez ajouté php-info() dans votre test.php script 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

et enfin redémarrer votre serveur nginx/http

sudo service nginx restart

0voto

al2suarez Points 91

Sur centos6 /etc/php.ini devrait être l'endroit, assurez-vous qu'il n'est pas défini plusieurs fois dans le fichier.

Par défaut, il y a la description de la balise dans une section "Quick Reference" :

; short_open_tag
;   Default Value: On
;   Development Value: Off
;   Production Value: Off

n'ajoutez pas la balise à cet endroit car elle est définie ultérieurement dans une section "Options linguistiques" (qui écraserait votre réglage) :

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
short_open_tag = Off

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X