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
- Easy php - Télécharger - Divers Web & Internet
- Comment exporter les photos de google photo vers l'ordinateur - Guide
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Roissy piac export - Forum Consommation & Internet
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