Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 tongue

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 tongue

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 ... > ...").

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 tongue) :

$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)

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 smile

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 tongue

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.

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 smile

Hors ligne