Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

debutant: comment recuperer le resultat d'un prog. exterieur

1 réponse
Avatar
francois.patte
Bonjour,

Je débute en php et je suis largué....
Je voudrais faire exécuter un programme extérieur et récupérer le
résultat dans une variable que je ferai éventuellement traiter par un
autre programme.... et, à la fin, afficher le résultat des différent
traitement.

Le programme s'appelle "devnag" et sa sortie quand on l'applique à un
fichier est un fichier LaTeX que j'aimerais, par la suite faire
traiter par LaTeX.

Voilà ce que j'ai fait:

$fichier = 'test.dn' ;
$commandes = '/home/patte/bin/devnag' ;

$out = popen("$commandes $fichier", "r") ;


Le résultat est un fichier "test.tex" dans le répertoire où je
travaille, ça c'est plutôt positif, mais la variable $out ne contient
absolument pas ce fichier!

Ce que j'aimerais, c'est avoir le contenu du fichier "test.tex" dans
une variables et pouvoir recommencer la manip en utilisant LaTeX et
récupérer le résultat pour le renvoyer au navigateur.

Je n'arrive pas! J'ai essayé proc_open ou d'autres fonction, sans
résultat.

Quelqu'un peut-il m'aider? Merci.

François Patte.

1 réponse

Avatar
Guillaume Bouchard
Francois Patte wrote:
Bonjour,


Bonjour.

$fichier = 'test.dn' ;
$commandes = '/home/patte/bin/devnag' ;

$out = popen("$commandes $fichier", "r") ;


Le résultat est un fichier "test.tex" dans le répertoire où je
travaille, ça c'est plutôt positif, mais la variable $out ne contient
absolument pas ce fichier!


Déjà $out c'ets un pointeur de fichier qu'il faut lire avec fread().
Maitenant ta fonction devnag elle renvoie le résultat ? Cela
m'ettonerais qu'elle renvoie le résultat sur stdout et qu'en même temps
elle crée le fichier test.tex.

Ce que j'aimerais, c'est avoir le contenu du fichier "test.tex" dans
une variables et pouvoir recommencer la manip en utilisant LaTeX et
récupérer le résultat pour le renvoyer au navigateur.


Pourquoi tu ne fais pas tout simplement

system("latex test.tex");
read("test.dvi");

?
Sinon, esseye de voir si ta fonction devnag ne peut pas renvoyer son
résultat sur stdou et si latex ne peut pas prendre sur stdin et renvoyer
sur stdout. Cela donnerait :

$out = popen('devnag test.dn | latex');
...

Quelqu'un peut-il m'aider? Merci.


En récapitulatif, ta fonction ne renvoie rien sur la sortie standard,
donc il est normal que tu ne recuperes pas le résultat.

--
Guillaume.