Lancement programme externe via php

Lancement programme externe via php - PHP - Programmation

Marsh Posté le 12-05-2010 à 16:41:51    

Bonjour tt le monde
 
j'ai un pb avec php, en fait je veux lancer un logiciel (Scilab) et en paramètre le fichier scilab qui va l'éxecuter via un script php. voila mon code mais cela ça ne marche pas
 
exec('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -nwni -nb -f ./Scilab test/test.sce');
je travail dans un environnement linux et windows
 
Merci pour votre aide

Reply

Marsh Posté le 12-05-2010 à 16:41:51   

Reply

Marsh Posté le 13-05-2010 à 14:19:04    

scelab est bien tagué executable ? (chmod +x)

 

Attention a ton -f, il va se trouver a l'endroit ou est executé ton script php.

 

Perso j'utiliserais plutot shell_exec au lieu d'exec ;)

 

Et je rajouterais une redirection des flux d'erreur sur la sortie pour voir afficher les erreurs aussi.

  

Message cité 1 fois
Message édité par chaced le 13-05-2010 à 14:19:24

---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 13-05-2010 à 23:46:35    

chaced a écrit :

scelab est bien tagué executable ? (chmod +x)
 
Attention a ton -f, il va se trouver a l'endroit ou est executé ton script php.
 
Perso j'utiliserais plutot shell_exec au lieu d'exec ;)
 
Et je rajouterais une redirection des flux d'erreur sur la sortie pour voir afficher les erreurs aussi.
 
 
 


 
Bonsoir, merci pour votre intervention  
 
en fait quand je lance ce code
shell_exec('C:/Program Files/scilab-5.2.2/bin/scilex -nwni -nb -f C:/wamp/www/Simulation_Morphologique/M_Crea_GV.sce');
la page ce charge sans fini mais scilab est lancé en mode Background je le vois dans la liste de process.  
 
k'est ce ke vous voulez dit par -f doit se trouver a l'endroit ou est executé le script php ??
 
vous m'avez parler sur une redirection des flux d'erreur sur la sortie, Pouvez vous svp me donnez une exemple de code , desole mais j'ai jamais travailer avec ses fonctions et je connais pas bcp et la je suis bloque dans mon stage sur cette partie.
 
Merci bcp d'avance

Reply

Marsh Posté le 14-05-2010 à 12:01:17    

shell_exec attend la fin de l'exécution du programme en l'occurrence scilab, donc normal qu'il tourne en boucle il attend juste la fin de ton programme.
 
la redirection des flux permet d'afficher les erreurs d'un logiciel en ajoutant en fin du programme un 2>&1.
 
Si on veut afficher que les erreurs et non la sortie classique, on peut faire un truc du genre
1>/dev/null 2>/dev/stdout.
 
Par contre ça fonctionne que sous linux.
 
Pour le fichier -f ./toto.sce, si le fichier index.php se trouve dans /home/www/index.php le fichier toto.sce devra se trouver au meme endroit, sinon mettre le path complet.


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 11:03:34    

Bonjour, merci pour l'explication
 
en fait le pb est toujours la meme:
 
<?php
shell_exec('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab'); // cette ligne ca merche ca lance scilab
shell_exec('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -nwni -nb -f /data/www/grainVirtuel2/Moi/M_Crea_GV.sce ');
// cette ligne il fait rien du tout
 
?>
 
 
j'ai bien vérifier que scilab est exécutable et dans le répértoire qui s'appele Moi se trouve le fichier .php avec le fichier scilab
 
si vous avez une idée sur ce ki passe ??
 
Merci d'avance
 
Bonne journée

Reply

Marsh Posté le 17-05-2010 à 12:08:45    

et un  
 
echo shell_exec('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -nwni -nb -f /data/www/grainVirtuel2/Moi/M_Crea_GV.sce &>/dev/stdout');  
 
affiche quoi ?


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 12:13:34    

chaced a écrit :

et un  
 
echo shell_exec('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -nwni -nb -f /data/www/grainVirtuel2/Moi/M_Crea_GV.sce &>/dev/stdout');  
 
affiche quoi ?


 
ça affiche rien du tout :S

Reply

Marsh Posté le 17-05-2010 à 13:17:29    

en plus, j'ai mis le fichier .sce dans le répertoire bin où se trouve l'exécutable et quand je tape la ligne de commande suivant :  scilab -f fichier.sce ca marche et il genere la solution  
mais quand je lance via php avec la commande : shell_exec('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -f fichier.sce'); ca entre dans un boucle infini il genere rien du tout

Reply

Marsh Posté le 17-05-2010 à 14:58:13    

ha il est dans une boucle infini, c'est pour ça qu'il n'affiche rien, car la commande attend la fin du programme pour afficher le code retour.


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 15:19:09    

chaced a écrit :

ha il est dans une boucle infini, c'est pour ça qu'il n'affiche rien, car la commande attend la fin du programme pour afficher le code retour.


 
en fait le .sce génère un ensemble des fichiers  et quand je lance le commande dans un terminal , il commence a générer les fichiers une après l'autre au fur et à mesure  
 
Mais via php il générer rien, vous pensez qu'il attend la fin de l'exécution avant qu'il affiche les résultats finale???

Reply

Marsh Posté le 17-05-2010 à 15:19:09   

Reply

Marsh Posté le 17-05-2010 à 16:34:51    

Ou il n'a pas les droits pour faire des opération, tu es sur que php a tout les droits ?
 
c'est un script cli lancé en ligne de commande ou un script lancé au travers d'apache ?


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 16:38:21    

chaced a écrit :

Ou il n'a pas les droits pour faire des opération, tu es sur que php a tout les droits ?
 
c'est un script cli lancé en ligne de commande ou un script lancé au travers d'apache ?


 
normqlement oui, comment on vérifie ?  
 
dans la liste des processus lancé, l'utilisateur de scilab est Apache.

Reply

Marsh Posté le 17-05-2010 à 17:12:05    

ls -la
 
Tu dois avoir les droits en écriture dans le répertoire ou seront écrit les fichiers. (www-data l'utilisateur apache généralement)


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 17:24:45    

chaced a écrit :

ls -la

 

Tu dois avoir les droits en écriture dans le répertoire ou seront écrit les fichiers. (www-data l'utilisateur apache généralement)

 

mon projet qui se trouve dans le répértoire www a les droits suivants :  voila la copie d'écran du résultats http://www.mediafire.com/?qdgz32nrlak

 

en plus dans le dossier ou scilab doit me génère les fichier j'ai tous les droites


Message édité par atout1 le 17-05-2010 à 17:32:23
Reply

Marsh Posté le 17-05-2010 à 17:57:04    

étrange, je ne vois pas ce qui l'empeche de marcher.

 

quand tu le lance dans un terminal ton .php il dit quoi (si php-cli est bien installé)?
(en metant
php ./fichier.php
par exemple)

Message cité 1 fois
Message édité par chaced le 17-05-2010 à 17:57:20

---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 18:12:09    

chaced a écrit :

étrange, je ne vois pas ce qui l'empeche de marcher.
 
quand tu le lance dans un terminal ton .php il dit quoi (si php-cli est bien installé)?  
(en metant  
php ./fichier.php
par exemple)


 
quand je lance execution via Terminal : php execution.php
il lance scilab mais il n'arrive pas à lire le fichier .sce :  
 
et dans le terminal il m'affiche un message d'erreur de genre
GTK-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type

Reply

Marsh Posté le 17-05-2010 à 18:16:00    

Ha ba voila, il doit afficher le meme message dans apache.
 
Il n'y a pas une option a activer en ligne de commande pour désactiver l'affichage ?


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 17-05-2010 à 18:38:54    

chaced a écrit :

Ha ba voila, il doit afficher le meme message dans apache.
 
Il n'y a pas une option a activer en ligne de commande pour désactiver l'affichage ?


 
pour désactiver l'affichage de quoi ?? j'ai pas bien compris
 
là il a commencé à afficher des errures de syntax scilab ; donc apparament il lit le fichier .sce ..  
Mais je ne comprends pas pour kan je lance depuis le navigateur ca ne marche pas :S :S

Reply

Marsh Posté le 18-05-2010 à 11:05:34    

Il essai de démarrer son interface graphique (GTK ce sont les librairies pourr l'affichage).
 
Quand tu le lance en ligne de commande, tu es en root, donc le script php aussi.  
Donc c'est une histoire de droit.


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 18-05-2010 à 11:58:59    

chaced a écrit :

Il essai de démarrer son interface graphique (GTK ce sont les librairies pourr l'affichage).

 

Quand tu le lance en ligne de commande, tu es en root, donc le script php aussi.
Donc c'est une histoire de droit.

 

je veux voir cette histoire des droits

 

mais normalement sur la machine perso, il faut pas avoir un pb des droits.

 

en fait j'ai essayer sur windows(machine perso) et linux et dans les deux cas quand je lance le fichier depuis terminal ca marche et ca ouvre le fenetre de scilab
mais depuis le navigateur ca marche tjs pas, il entre dans un boucle infini

 

sinon, vous savez comment faire lancer scilab qui se trouve sur un serveur et en paramètre le fichier .sce??

Message cité 1 fois
Message édité par atout1 le 18-05-2010 à 12:34:06
Reply

Marsh Posté le 18-05-2010 à 12:34:29    

atout1 a écrit :


 
je veux voir cette histoire des droits  
 
mais normalement sur la machine perso, il faut pas avoir un pb des droits.
 
en fait j'ai essayer sur windows(machine perso) et linux et dans les deux cas quand je lance le fichier depuis terminal ca marche et ca ouvre le fenetre de scilab  
mais depuis le navigateur ca marche tjs pas, il entre dans un boucle infini
 
sinon, vous savez comment faire lancer scilab qui se trouve sur un serveur et en paramètre le fichier .sce??


 
sinon, vous savez comment faire lancer scilab qui se trouve sur un serveur et en paramètre le fichier .sce??
 

Reply

Marsh Posté le 18-05-2010 à 12:39:45    

atout1 a écrit :


 
sinon, vous savez comment faire lancer scilab qui se trouve sur un serveur et en paramètre le fichier .sce??
 
shell_exec('ssh xx.xx.x.xxx scilab -f /home/tout/Bureau/Nouv/M_Crea_GV.sce'); ma question c'est je passe le mot de passe dans ce commande ??? Merci d'avance
 


Reply

Marsh Posté le 18-05-2010 à 13:52:07    

Il ne peux pas lancer scilab en graphique via navigateur, donc le client doit planter.
 
Pour ssh ça ne fonctionnera pas, il faut soit utiliser un script expect et c'est compliqué, soit utiliser la lib ssh2 de php qui est faite pour.


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 18-05-2010 à 16:22:39    

chaced a écrit :

Il ne peux pas lancer scilab en graphique via navigateur, donc le client doit planter.
 
Pour ssh ça ne fonctionnera pas, il faut soit utiliser un script expect et c'est compliqué, soit utiliser la lib ssh2 de php qui est faite pour.


 
d'accord et merci bcp pour vos interventions et votre aide .. je veux essayer avec ssh2 et si je me trouve bloque je pose la question :D :P  
Merci
 

Reply

Marsh Posté le 25-05-2010 à 16:29:34    

Bonjour,

 

kan je lance le script php qui contient :
system('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -f ./simulation/simulation_morphologique/test.sce') ;

 

il m'affiche l'erreur suivant : vous avez une idée cé koi cette erreur
Error occurred during initialization of VM java.lang.UnsatisfiedLinkError: no zip in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at java.lang.System.initializeSystemClass(Unknown Source) !--error 999 Tcl Error: Error during the TK initialization (Tk_Init): no display name and no $DISPLAY environment variable

 

Merci d'avance


Message édité par atout1 le 25-05-2010 à 16:30:06
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed