Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2007, 16h47   #1
Invité régulier
 
Inscription : janvier 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 52
Points : 7
Points : 7
Par défaut [Configuration] problème d'echo en php

Bonjour à tous,

Voilà le problème auquel je suis confronté :
En php5, j'exécute la commande suivante :
Code :
<?php echo 123456789123456789; ?>
Sur un serveur, je reçois :
alors que sur un autre, je reçois et je crois que ça engendre des effets de bord dans le reste de mon code.
Sauriez-vous comment uniformiser la réponse, et quelle pourrait être la source du problème ?

PS : le php.ini est identique sur les 2 serveurs
D'avance, merci.
Xris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 16h59   #2
Membre actif
 
Inscription : août 2002
Messages : 194
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 194
Points : 194
Points : 194
Envoyer un message via MSN à Léortien
j'ai peur de poser une question bête
pourqui tu n'entoures pas ton nombre de guillemets pour l'echo?
(ça le transforme en chaine de caractères et donc plus de pb d'affichage)


sinon ça ne doit pas venir de php
mais du serveur lui même et de sa manière de gérer les calculs
car
123456789123456789 = 1.23456789123456789E+17

(celui qui de donne un résultat bizarre doit juste avoir un nombre plus limité de nombre qui peut "memoriser" je ne connais le terme dsl, bref il ne supporte pas plus de 12 chiffres pour la mantise)

l'effet de bord c'est donc peut être une approximation dans les calculs par la suite...
Léortien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 17h10   #3
Invité régulier
 
Inscription : janvier 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 52
Points : 7
Points : 7
c'est en gérant un nombre, et non un string que je me suis aperçu du problème.

Et effectivement, je pense que ça vient d'un problème de config, mais lequel vu que les php.ini sont identiques.
y a-t-il un module ou une extension spécifique à la gestion des calculs ?

Et l'approximation des calculs entraine bien des problèmes derrière.
Xris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 17h31   #4
Membre actif
 
Inscription : août 2002
Messages : 194
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 194
Points : 194
Points : 194
Envoyer un message via MSN à Léortien
si c'est php (ça me surprendrait un peu, mais j'avoue que les calculs avec de grands nombres c'est pas courant en php)

vu que les php.ini sont pareil.
essaye d'utiliser phpinfo pour avoir les informations sur les modules installés
(je me demande si ça ne se verrait pas d'ailleurs dans le php.ini, ça fait tellement longtemps que je n'y ai pas touché que j'ai peur de dire des bétises).

et donc vu qu'au niveau php les serveurs sont pareils
j'ai bien peur que ce soit la config du serveur en lui même et non pas de php qui gène..
Léortien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 21h56   #5
Invité régulier
 
Inscription : janvier 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 52
Points : 7
Points : 7
Oui, c'est effectivement ce que je pense, mais j'avoue que je ne sais pas de quel côté regarder
Xris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 23h13   #6
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 85
Points : 33
Points : 33
Essaye déja de faire un phpinfo() sur les deux serveurs et regarde si la variable "precision" a la même valeur.

Sinon ça vient surement d'une limite du système ou de la machine. Est-ce que ce sont des OS différents ? Architecture différentes ? (32/64 bits...)
__________________
"Software is like sex, it's better when it's free" -- Linus Torvalds
Torpedox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 23h21   #7
Invité régulier
 
Inscription : janvier 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 52
Points : 7
Points : 7
hum, piste intéressante.

Après vérification, la variable precision (12 en l'ocuurence) est identique sur les 2 serveurs.
Les OS sont effectivement différents : Debian Sarge et Gentoo.
Quant à l'architecture, y'a t-il une commande pour en avoir le détail ?

Cela voudrait-il dire qu'il faut recompiler PHP en omettant certains paramètres ?
Xris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 09h25   #8
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Lors des calculs ca a vraiment un incidence ?
Je pense que php comprend les puissances de 10 donc ne devrait pas poser de problème ca reste qu'un bug d'affichage non?
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 09h34   #9
Membre actif
 
Inscription : août 2002
Messages : 194
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 194
Points : 194
Points : 194
Envoyer un message via MSN à Léortien
123456789123456789 = 1.23456789123456789E+17

or pour le serveur qui pose pb
il affiche juste
1.23456789123+17
soit 12 (la précision) chiffres après la virgule

il est donc possible que les chiffres suivants soient oubliés/négligés et 456.789 ce n'est pas forcément négligeable quand on enchaine les calculs.



Xris pour savoir si c'est bien ça fait 2-3 calculs avec des grands nombres
et tu compares le résultat avec
- le vrai résultat
- celui que tu aurais si tu ne gardes que 12 chiffres significatifs après la virgule

si ça correspond au deuxième il y a bien un pb d'arrondi.


ensuite si c'est bien ça, il faut voir si en modifiant la précision ça résoud ton pb (si les capacités (ou la config) du serveur le supportent...)
Léortien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 10h54   #10
Invité régulier
 
Inscription : janvier 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 52
Points : 7
Points : 7
effectivement, en cascadant les calculs, les résultats sont incohérents, et il y a bien une erreur.
Je pense que cela vient d'un serveur dont le noyau a été compilé pour un support 64 bits (gentoo) alors que l'autre est en 32 bits (debian).
Je continue de creuser ...
Xris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 15h36   #11
Invité régulier
 
Inscription : janvier 2005
Messages : 52
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 52
Points : 7
Points : 7
encore plus étrange :

Code :
<?php echo gettype(0x9e3779b9); ?>
me renvoie double (debian, 32 bits) et integer (gentoo, 64 bits).

Je pense que mon problème vient également de là.
Sauriez vous quelle est la cause de cette différence ?
Xris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h34.


 
 
 
 
Partenaires

Hébergement Web