Problème de définition d'une constante avec des simple quote

Problème de définition d'une constante avec des simple quote - PHP - Programmation

Marsh Posté le 10-12-2011 à 13:52:03    

Bonjour !
 
Je viens de récupérer un site que je viens d'installer sur mon serveur, mais j'ai un gros problème : toutes les constantes sont définies avec des simple quotes mais ma version de php ne le permet pas.
 
Exemple :
 
<?php
 
define('MY_CONST', 'value');
 
echo MY_CONST;
 
?>
 
Le résultat de ce script est "MY_CONST" au lieu de "value".
 
Je n'arrive pas à trouver dans le php.ini l'option me permettant de régler le problème.
 
Quelques infos sur mon environnement :
 
Serveur OVH dédié
PHP Version 5.3.8
Linux 2.6.38.2-grsec-xxxx-grs-ipv6-64 #2 SMP Thu Aug 25 16:40:22 UTC 2011 x86_64
Apache 2.0 Handler
 
 
Merci pour votre aide !
 

Reply

Marsh Posté le 10-12-2011 à 13:52:03   

Reply

Marsh Posté le 10-12-2011 à 22:20:04    


Toute constante non définie est évaluée comme une chaîne de caractères, et comme tu as mal défini MY_CONST, et que MY_CONST n'existe pas, celle-ci est évaluée en tant 'MY_CONST'.


Message édité par CyberDenix le 11-12-2011 à 18:39:57

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 10-12-2011 à 23:07:34    

Oui ça j'avais compris mais le problème c'est que je reprends un site dans lequel je ne peux recoder toutes les pages (beaucoup trop nombreuses), donc il me faudrait savoir quel option dans le php.ini je dois activer pour que le code que j'ai mis ci-dessus fonctionne...


---------------
On joue tous à des Jeux Gratuits sur Jeux7.fr !!
Reply

Marsh Posté le 11-12-2011 à 14:11:56    

UP


---------------
On joue tous à des Jeux Gratuits sur Jeux7.fr !!
Reply

Marsh Posté le 11-12-2011 à 17:32:05    

up


---------------
On joue tous à des Jeux Gratuits sur Jeux7.fr !!
Reply

Marsh Posté le 11-12-2011 à 20:00:55    

Y'a aucune raison que ça ne marche pas.
 
T'est sûr que tes simple quotes ' en sont bien, pas des ` par exemple...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 11-12-2011 à 20:36:09    

Ce sont bien des simples quote car sur un serveur (l'ancien que l'on ne va pas garder) ça marche mais sur le nouveau non...
 
Il doit surement y avoir une option dans le php.ini à activer pour permettre leurs utilisations.


---------------
On joue tous à des Jeux Gratuits sur Jeux7.fr !!
Reply

Marsh Posté le 12-12-2011 à 17:37:08    

Tu fais fausse route.
define('MY_CONST', 'value');
Il n'y a pas d'autres écritures possibles pour définir une constante...
Donc ça n'est pas une histoire de quote.

Reply

Marsh Posté le 12-12-2011 à 17:39:29    

Scarf3ss3 a écrit :

Tu fais fausse route.
define('MY_CONST', 'value');
Il n'y a pas d'autres écritures possibles pour définir une constante...
Donc ça n'est pas une histoire de quote.


 
Non, on peut aussi faire :
define("MY_CONST", "value" );
Et apparement, cette écriture là passe chez lui, mais pas l'autre.
 
Celà dit, je ne comprend pas l'origine du PB !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-12-2011 à 00:58:02    

Erreur de ma part; à certains endroits, les constantes sont définies sans aucune quote, ni simples ni doubles, et cela passe quand même sur le serveur 1, mais pas sur le 2, et le problème vient de là;
 
J'ai 2 solutions :
 
_ soit modifier tous les fichiers (et il y en a un paquet)
_ soit trouver l'option de php.ini me permettant de définir des constantes sans quote (ce qui est moche, mais ça me permettra de gagner un peu de temps avant de revoir tout le code)
 
Si vous avez des idées :)


---------------
On joue tous à des Jeux Gratuits sur Jeux7.fr !!
Reply

Marsh Posté le 13-12-2011 à 00:58:02   

Reply

Marsh Posté le 13-12-2011 à 01:28:04    

Une bonne grosse expression régulière !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-12-2011 à 01:37:12    

_ soit modifier tous les fichiers (et il y en a un paquet)  
 
find . -name "*.php" -print | xargs sed -i 's/define\(\'(.*)\',\s*(.*)\)/define("\1", "\2" )/g'
 
Je l'ai fait au vol, non testé, mais c'est dans l'idée.

Reply

Marsh Posté le 13-12-2011 à 01:47:00    

Et
 
find . -name "*.php" -print | xargs sed -i 's/define\((.*),\s*(.*)\)/define("\1", "\2" )/g'  
 
Pour les définitions de constantes sans quotes genre :
define(MY_CONST, 'value');


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 13-12-2011 à 17:54:02    

Bonjour à tous !
 
Pas mal de fichiers n'étaient pas utilisés donc en faisant le ménage, j'ai pu les modifier à la main.
 
Merci encore à tous, et en particulier à Mara's dad et Pc_eXPert, je garde vos idées si un jour j'ai vraiment besoin d'un traitement massif !
 
;)


---------------
On joue tous à des Jeux Gratuits sur Jeux7.fr !!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed