Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1285 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Lancement programme externe via php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancement programme externe via php

n°1992673
atout1
Etudiant
Posté le 12-05-2010 à 16:41:51  profilanswer
 

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

mood
Publicité
Posté le 12-05-2010 à 16:41:51  profilanswer
 

n°1992833
chaced
Posté le 13-05-2010 à 14:19:04  profilanswer
 

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
n°1992943
atout1
Etudiant
Posté le 13-05-2010 à 23:46:35  profilanswer
 

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

n°1993008
chaced
Posté le 14-05-2010 à 12:01:17  profilanswer
 

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
n°1993625
atout1
Etudiant
Posté le 17-05-2010 à 11:03:34  profilanswer
 

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

n°1993642
chaced
Posté le 17-05-2010 à 12:08:45  profilanswer
 

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
n°1993644
atout1
Etudiant
Posté le 17-05-2010 à 12:13:34  profilanswer
 

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

n°1993651
atout1
Etudiant
Posté le 17-05-2010 à 13:17:29  profilanswer
 

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

n°1993695
chaced
Posté le 17-05-2010 à 14:58:13  profilanswer
 

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
n°1993703
atout1
Etudiant
Posté le 17-05-2010 à 15:19:09  profilanswer
 

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???

mood
Publicité
Posté le 17-05-2010 à 15:19:09  profilanswer
 

n°1993769
chaced
Posté le 17-05-2010 à 16:34:51  profilanswer
 

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
n°1993775
atout1
Etudiant
Posté le 17-05-2010 à 16:38:21  profilanswer
 

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.

n°1993795
chaced
Posté le 17-05-2010 à 17:12:05  profilanswer
 

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
n°1993804
atout1
Etudiant
Posté le 17-05-2010 à 17:24:45  profilanswer
 

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
n°1993821
chaced
Posté le 17-05-2010 à 17:57:04  profilanswer
 

é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
n°1993828
atout1
Etudiant
Posté le 17-05-2010 à 18:12:09  profilanswer
 

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

n°1993830
chaced
Posté le 17-05-2010 à 18:16:00  profilanswer
 

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
n°1993836
atout1
Etudiant
Posté le 17-05-2010 à 18:38:54  profilanswer
 

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

n°1993993
chaced
Posté le 18-05-2010 à 11:05:34  profilanswer
 

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
n°1994022
atout1
Etudiant
Posté le 18-05-2010 à 11:58:59  profilanswer
 

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
n°1994032
atout1
Etudiant
Posté le 18-05-2010 à 12:34:29  profilanswer
 

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??
 

n°1994033
atout1
Etudiant
Posté le 18-05-2010 à 12:39:45  profilanswer
 

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
 


n°1994052
chaced
Posté le 18-05-2010 à 13:52:07  profilanswer
 

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
n°1994199
atout1
Etudiant
Posté le 18-05-2010 à 16:22:39  profilanswer
 

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
 

n°1996003
atout1
Etudiant
Posté le 25-05-2010 à 16:29:34  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Lancement programme externe via php

 

Sujets relatifs
programme qui marche puis qui ne marche plus ??executer un programme externe sous php
Bug excel suite a lancement de macros successivesProgramme somme
Lire et écrire dans un fichier Excel avec un programme c++Aide pour un programme en C/C++ (compression en rar)
Utilisation d'une DLL externeProgramme de saisie
trouver un programme en c qui lit des codes provenant d'un interface j 
Plus de sujets relatifs à : Lancement programme externe via php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR