Lancement programme externe via php - PHP - Programmation
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.
Marsh Posté le 13-05-2010 à 23:46:35
chaced a écrit : scelab est bien tagué executable ? (chmod +x) |
Bonsoir, merci pour votre intervention
en fait quand je lance ce code
shell_exec('CProgram Files/scilab-5.2.2/bin/scilex -nwni -nb -f Cwamp/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
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.
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
Marsh Posté le 17-05-2010 à 12:13:34
chaced a écrit : et un |
ça affiche rien du tout :S
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
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???
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 ? |
normqlement oui, comment on vérifie ?
dans la liste des processus lancé, l'utilisateur de scilab est Apache.
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
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)
Marsh Posté le 17-05-2010 à 18:12:09
chaced a écrit : étrange, je ne vois pas ce qui l'empeche de marcher. |
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
Marsh Posté le 17-05-2010 à 18:38:54
chaced a écrit : Ha ba voila, il doit afficher le meme message dans apache. |
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
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. |
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??
Marsh Posté le 18-05-2010 à 12:34:29
atout1 a écrit : |
sinon, vous savez comment faire lancer scilab qui se trouve sur un serveur et en paramètre le fichier .sce??
Marsh Posté le 18-05-2010 à 12:39:45
atout1 a écrit : |
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.
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. |
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
Merci
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
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