Export d'une variable vers PHP

Fermé
Nemoadd - Modifié par Nemoadd le 8/08/2011 à 15:08
mamiemando Messages postés 33636 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2025 - 10 août 2011 à 14:10
Bonjour,

J'ai un script qui, pour résumer, contient une boucle telle que celle-ci :
#!/bin/bash 
retour='' 
while read line 
do 
    retour="$retour$line:aa:" 
    #retour='ligne1:aa:ligne2:aa:ligne3:aa: 
done <'test' 
#retour='ligne1:aa:ligne2:aa:ligne3:aa: 
echo $retour 



Et j'ai un script PHP qui doit récupérer le contenu de cette variable avec cette ligne :
exec("cgibin/script2.sh",&$output); 


Le fichier test contient 3 lignes :
ligne1 
ligne2 
ligne3 


Dans ce cas, PHP ne récupère rien.
Si je dé-commente la ligne commentée qui est dans le boucle, ça ne marche pas mieux.
Si je dé-commente le dernière ligne commentée, PHP récupère bien le contenu de la variable $retour.

Il semblerait donc que le contenu d'une variable définie dans la boucle ne soit pas pris en compte par PHP.

Quelqu'un aurait-il une solution à ce problème ?

Merci
A voir également:

3 réponses

mamiemando Messages postés 33636 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2025 7 842
Modifié par mamiemando le 9/08/2011 à 18:05
Puisque d'après toi le bug vient du script shell, le plus simple est encore de le deboguer.

En tout cas chez moi ça semble donner le bon résultat (j'ai arrangé un peu le code au passage) :

(mando@silk) (~) $ cat test  
ligne1 
ligne2 
ligne3 

(mando@silk) (~) $ cat plop.sh  
#!/bin/sh  
retour=""  
while read line  
do  
    echo $line 
    retour="${retour}${line}:aa:"  
done < 'test'  
echo $retour  

(mando@silk) (~) $ sh plop.sh  
ligne1 
ligne2 
ligne3 
ligne1:aa:ligne2:aa:ligne3:aa:


Bonne chance
0
Lorsque le contenu de la variable "retour" est défini dans la boucle, le script shell affiche bien les bonnes informations mais le script php ne les récupère pas.

Lorsque le contenu de la variable "retour" est défini après la boucle, le script shell affiche bien les bonnes information et le script php les récupère.
0
mamiemando Messages postés 33636 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2025 7 842
Modifié par mamiemando le 10/08/2011 à 14:11
Bon c'est bizarre. Le PHP semble juste (si tu as bien écrit &$output) et le script shell aussi si tu as retranscrit les modifications que je t'ai indiqué.

Est-ce que tu as essayé de reproduire le bug sur un exemple simplifié (typiquement ta version résumée) plutôt que sur ton code ?

Est-ce que ce résumé est fidèle au comportement de ton programme réel, peut-être y a-t'il un effet de bord que tu as négligé ?

Autre piste (un peu moche je te l'accorde) : stocke le résultat de ton script shell dans un fichier intermédiaire et lis le en php (mktemp, fopen, fscanf, fclose...).

Bonne chance
0