Export d'une variable vers PHP
Bonjour,
J'ai un script qui, pour résumer, contient une boucle telle que celle-ci :
Et j'ai un script PHP qui doit récupérer le contenu de cette variable avec cette ligne :
Le fichier test contient 3 lignes :
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
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:
- Export d'une variable vers PHP
- Export favoris chrome - Guide
- Comment exporter les photos de google photo vers l'ordinateur - Guide
- Easy php - Télécharger - Divers Web & Internet
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Clavier qwerty vers azerty - Guide
3 réponses
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) :
Bonne chance
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
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.
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.
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
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