Problème de définition d'une constante avec des simple quote - PHP - Programmation
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'.
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...
Marsh Posté le 11-12-2011 à 14:11:56
UP
Marsh Posté le 11-12-2011 à 17:32:05
up
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...
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.
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.
Marsh Posté le 12-12-2011 à 17:39:29
Scarf3ss3 a écrit : Tu fais fausse route. |
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 !
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
Marsh Posté le 13-12-2011 à 01:28:04
Une bonne grosse expression régulière !
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.
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');
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 !
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 !