#1 Le 20/05/2007, à 03:20
- dbbg
[Resolu] Problème php, exec et perte de caractère
Bonsoir ou bonjour tout le monde, à 4H du mat on sait plus trop
Voila, je dois developper un site web qui execute un programme, récupere la sortie et le stocke dans un fichier. Jusqu'ici rien de bien méchant sauf qu'il manque des caractères voire des mots dans le fichier où je stocke la sortie.
Je fais un :
passthru("echo `$cmd_ptr` > $filetmp");
et par exemple au lieu d'obtenir ça :
<RESULTAT><HEAD>
<SRC> 128.112.139.71 </SRC>
<PORTSRC> 33456 </PORTSRC>
<DEST> 91.121.1.65 </DEST>
<PORTDEST> 33457 </PORTDEST>
<PROTOCOL> udp </PROTOCOL>
<ALGO> exh </ALGO>
<DURATION> 13 s </DURATION>
</HEAD>
J'ai tout simplement ça :
<RESULTAT>
<XML>
<HEAD>
<FILS>
Si quelqu'un a une explication, je suis preneur
Dernière modification par dbbg (Le 20/05/2007, à 20:24)
Hors ligne
#2 Le 20/05/2007, à 07:51
- g_barthe
Re : [Resolu] Problème php, exec et perte de caractère
bonjour,
EUh tu es en train d'essayer d elire un fichier xml en php la après ta commande "passthru" ?
Si c'est bien le cas tu as peut etre une erreur au niveau de la librairie xml qui n'est peut etre pas activée. Je suis pas fortiche en xml mais peut etre que c'est une piste à creuser.
Un autre membe confirmera peut etre.
Mais ce que tu recupère c'est dans le fichier de stockage ou c après en relisant le fichier ?
Mon forum perso sur le génie climatique http://le-genie-climatique.positifforum.com/
Le forum des travaux manuels : http://pausebroderie.fr/
Hors ligne
#3 Le 20/05/2007, à 10:10
- dbbg
Re : [Resolu] Problème php, exec et perte de caractère
En fait, ce que je dois obtenir, c'est ce que mon programme sort sur la sortie standard quand je l'execute à partir d'une console. Et ce que j'obtiens, c'est ce qu'il y a dans le fichier de stockage.
EUh tu es en train d'essayer de lire un fichier xml en php la après ta commande "passthru" ?
Justement non, j'execute une commande shell qui me renvoie un code en XML et je redirige la sortie vers un fichier. Mais ce que je comprends pas, c'est pourquoi il m'oublie des caractères en cours de route (j'ai tout essayé pourtant, shell_exec, exec mais rien n'y fait, j'ai toujours le même résultat...).
Hors ligne
#4 Le 20/05/2007, à 10:51
- naholyr
Re : [Resolu] Problème php, exec et perte de caractère
Tu sais que tu fais une exécution dans une exécution : d'abord tu exécutes la commande $cmd_ptr, et ensuite tu exécutes la commande "echo résultat-de-la-premiere-comment > ...".
Ça me paraît bancal comme fonctionnement...
Si tu as un contenu à écrire dans un fichier, utilise fopen, fwrite, fclose, et pas un passthru("echo ... > ...").
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#5 Le 20/05/2007, à 10:58
- dbbg
Re : [Resolu] Problème php, exec et perte de caractère
Justement, j'ai fait un exec classique avec des fopen, fwrite et fclose, et j'ai toujours le même problème et j'arrive pas trop à comprendre.
Je c/c le code que j'ai fait un exec (je mets une version simplifié pour pas que le code soit indigeste ) :
$cmd_ptr="./ptr-cli " . $_POST['serveur'] ." ". $_POST['ip'] . "";
exec($cmd_ptr, $stock);
$result_client="";
foreach($stock as $ligne) {
$result_client=$result_client . $ligne;
}/* On crypte son adresse avec md5. Le résultat obtenu sera utilisé pour nommer les fichier images, xml et texte afin de garantir que chaque utilisateur recevra ses résultats et pas les résultats destinés à un autre utilisateur */
$nom_util=md5($add_ip);$filetmp="tmp-$nom_util.xml";
//Ouverture du fichier
if (!$handle_tmp = fopen($filetmp, 'w+')) {
echo "Impossible d'ouvrir le fichier ($filetmp)";
exit;
}//On écrit le code
if (fwrite($handle_tmp, $result_client) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filetmp)";
exit;
}
//On ferme le fichier
if (fclose($handle_tmp) === FALSE) {
echo "Impossible de fermer le fichier ($filetmp)";
exit;
}
Hors ligne
#6 Le 20/05/2007, à 12:12
- naholyr
Re : [Resolu] Problème php, exec et perte de caractère
Bah déjà, var_dump($result_client) pour voir si tu as bien tout récupéré (ça permettra de savoir si le problème est à l'écriture - ce qui me paraît impossible - ou à la récupération de la sortie de la commande - ce qui me paraît improbable).
Puis tant qu'on est dans le var_dump(), fais aussi un dump de ta commande pour être sûr que tu exécutes bien ce que tu penses exécuter.
Dernière modification par naholyr (Le 20/05/2007, à 12:13)
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#7 Le 20/05/2007, à 14:44
- dbbg
Re : [Resolu] Problème php, exec et perte de caractère
Bon j'ai fait un dump de ma commande et de mon $result_client
D'après ce que je vois, la commande est executée comme je l'attendais, tandis qu'il y a un problème pour le result_client, mais normal, vu que les balises XML de s'affichent pas sur la page HTML.
Donc là, je vois vraiment pas ce qui ne marche pas, si vous avez une idée, quelqu'elle soit, je suis franchement preneur
Hors ligne
#8 Le 20/05/2007, à 17:16
- dbbg
Re : [Resolu] Problème php, exec et perte de caractère
Personne n'a vraiment une idée de ce qui foire ? Je penche sur le probleme depuis le debut de l'aprem ;(
Hors ligne
#9 Le 20/05/2007, à 17:45
- dbbg
Re : [Resolu] Problème php, exec et perte de caractère
Désolé de flooder le forum, mais je voudrais savoir si l'origine de mon problème est indépemmendent de ma volonté.
Je m'explique : En fait, des fois, mon programme php marche nickel comme il faut (cas malheureusement assez rare mais ils existent) mais la plupart du temps, il foire car il bouffe des caractères.
Donc je voulais avoir votre avis sur mon explication car sincèrement, je suis en train de peter un cable
Hors ligne
#10 Le 20/05/2007, à 19:35
- naholyr
Re : [Resolu] Problème php, exec et perte de caractère
Moi je ferais un echo $cmd_ptr et si le script “bouffe des caractères” j'irais dans un terminal lancer la commande pour voir si sa sortie est bonne et si c'est bien mon script PHP qui merde.
Messagerie instantanée : naholyr@jabber.fr
Envoyer vos images sur le web d'un clic !
Choix du système à rebooter (graphique)
Hors ligne
#11 Le 20/05/2007, à 20:04
- marc31
Re : [Resolu] Problème php, exec et perte de caractère
c'est pas un probleme de flush de buffer ?
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#12 Le 20/05/2007, à 20:24
- dbbg
Re : [Resolu] Problème php, exec et perte de caractère
Bon en fait, toutes mes excuses, mais j'ai mis une journée à comprendre que ce n'est pas mon script qui foirait mais bel et bien la commande que j'execute.
Comme quoi les bons vieux debug sont les meilleurs...
En tout cas, merci pour les réponses qui m'ont aidé malgré tout
Hors ligne