Lancement du programme Scilab via PHP

Fermé
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010 - Modifié par V4lkYr le 18/05/2010 à 15:38
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011 - 27 mai 2010 à 15:40
Bonjour,

j'essaie de créer une interface web pour Scilab (logiciel de calcul opensource).

J'ai commencé à coder sous XP (à la demande de mes clients), qui m'ont demandé de passer sous Linux peu de temps après. Du coup j'ai installé Scilab sous Linux, et Xampp.

Dans mon code, j'exécutais un script Scilab grâce à la fonction PHP "exec", suivi d'une ligne qui lançait Scilab avec en argument le script à exécuter.

Sauf que, passé sous Linux, il ne veut plus rien entendre ^^"
J'ai essayé les commandes de base, du style ls ou pwd ça marche nickel, mais après pour celle qui m'intéresse rien ne va plus. Mon code de lancement :

exec ('/root/scilab-5.2.2/bin/scilab -f ./scripts/script'.$id.'/'.$this->scripts[$id]->getName().'.sci') ;


Scilab est bien installé dans root, mon script PHP qui appelle le programme est dans un dossier "poject" contenant "scripts" contenant lui même tous mes scripts (dans des dossiers script concaténés avec leur identifiants), et le script en lui-même est dans ce dossier.

J'ai bien sûr vérifié les droits d'accès à tous les fichiers.


Si quelqu'un a ne serait-ce qu'un semblant d'aide à me donner, je suis preneur ;)
A voir également:

23 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
10 mai 2010 à 14:55
Quand tu lances scilab en ligne de commande depuis un terminal, ca marche bien ?
1
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
Modifié par V4lkYr le 10/05/2010 à 14:58
oui ça marche bien, il me génère mes fichiers de sortie et tout se passe bien

pendant que ça tourne, j'ai fait un petit "ps" pour savoir si Scilab se lance, et il ne se lance pas
j'ai aussi essayé en mettant le chemin vers mon script en dur, aucun effet
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
10 mai 2010 à 15:02
Je n'en suis pas sûr, c'est juste une idée :
Quand tu fais /root/scilab-5.2.2/bin/scilab, sous linux ok, ca lance le programme depuis la racine du pc

Mais quand tu veux le lancer depuis php, le / correspond à la racine du serveur php, pas à celle du pc ...
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
10 mai 2010 à 15:17
dommage j'aurai bien aimé que soit ça ^^
j'ai supposé que c'était ça, alors j'ai balancé le chemin en "absolu" depuis la racine serveur, ou en relatif par rapport à mon script et ça ne marche toujours pas :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
Modifié par jeangilles le 10/05/2010 à 15:24
En allant voir dans le man d'exec, je suis tombé sur ca :

Lorsque le safe mode est activé, vous pouvez uniquement exécuter des programmes qui se situent dans le dossier défini par safe_mode_exec_dir. Pour des raisons pratiques, il n'est actuellement pas permis d''avoir le composant .. dans le chemin de l'exécutable. 



Faut peut être aller désactiver le safe mode dans le php.ini ou déplacer le bin de scilab
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
Modifié par V4lkYr le 10/05/2010 à 15:28
le safe mode est désactivé, j'avais vérifié
mais j'ai trouvé d'autres modes

safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid On On
safe_mode_include_dir no value no value



y'a peut etre quelque chose que j'ai pas spécifié, mon Linux est sur une machine virtuelle à l'intérieur de mon XP, mais normalement ça pose pas de problème...
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
10 mai 2010 à 15:36
Ben je vois pas là :O

Je sais pas si ca change grand chose, mais y'a aussi la fonction php shell_exec()

il doit bien ya voir une différence entre shell_exec et exec, même si je ne la connais pas ^^
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
10 mai 2010 à 15:44
la différence c'est que shell_exec retourne le résultat de la commande sous forme de chaine, exec ne retourne rien sauf qi on met un argument (genre $out) après la commande, et retourne ça sous forme de tableau.

j'avoue que je commence un peu à péter un cable XD
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
10 mai 2010 à 15:49
T'as bien vérifié le contenu du exec en faisant un echo ?
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
10 mai 2010 à 15:55
le problème c'est que mon php attend la terminaison du programme pour récupérer les graphiques de retour, et du coup, ma page attend la fin sans fin (^^)

je teste en trafiquant et en générant avant les graphiques de retour et ça me donne quelque chose de pire ^^" :


!--error 999
Erreur Tcl: Erreur pendant l'initialisation de TK (Tk_Init): couldn't connect to display ":0.0"
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
10 mai 2010 à 15:58
et du coup, ma page attend la fin sans fin 


Ouais mais, si tu fais le echo avant, ca sera quand même affiché non ?
Ca fait longtps que j'ai plus fait de php, mais c'est ce qu'il me semble ^^
Sinon, tu prux écrire dans une sorte de fichier de log ... ^^
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
10 mai 2010 à 16:03
dans mon error.log j'ai ça :

No protocol specified
Could not initialize graphics Environment
Scilab Graphical option may not be working correctly.
An error occurred: Could not initialize class sun.awt.X11GraphicsEnvironment
Cannot create Scilab Window.
Check if the thirdparties are available (Flexdock, JOGL...).
See SCI/etc/classpath.xml for default paths.
Could not find class: Could not initialize class sun.awt.X11GraphicsEnvironment
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
10 mai 2010 à 16:15
Je vois ^^
Essayes en ajoutant les paramètres -nwni et -nb à l'appel de scilab :
exec ('/root/scilab-5.2.2/bin/scilab -nwni -nb -f ./scripts/script'.$id.'/'.$this->scripts[$id]->getName().'.sci') ;
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
10 mai 2010 à 16:24
ça a l'air de marcher car le processus scilab est maintenant visible avec "ps". Par contre, il me met une erreur :

usecanvas(%F) ;
!--error 999
Le module 'GUI' de Scilab n'est pas installé.
at line 178 of exec file called by :
exec('SCI/etc/scilab.start',-1);;exec('./scripts/script0/script0.sci',-1.awt.9


mais apparamment c'est dû à l'installation de scilab... je vais regarder à quoi ça correspond
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
11 mai 2010 à 12:17
toujours le même problème, j'ai essayé avec toutes les options de lancement, sans ça marche pas :'(

on dirait qu'il me manque un module de scilab pour afficher les graphiques ... quelqu'un a une idée ?
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
17 mai 2010 à 15:58
j'ai toujours mon problème ...
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
18 mai 2010 à 15:40
Initialisation :
Chargement de l'environnement de travail
!--error 999
Le module Scilab Graphics n'est pas installé.
at line 9 of function createOrSetFigure called by :
at line 14 of function figure called by :
figure(1);
at line 179 of exec file called by :
exec('SCI/etc/scilab.start',-1);;exec('./scripts/script0/script0.sci',-1)


mon module "graphics" est bien installé, j'ai meme réinstallé scilab-5.2.2 et je trouve pas comment résoudre ça :/

besoin d'aide
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
25 mai 2010 à 16:09
help plz
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 25/05/2010 à 16:20
je fais la même chose ke toi, et j'ai pas réussi à trouver une solution. j'ai essayé sur plusieurs Forum mais tjs pas de solution :S
en fait moi aussi je développe une interface via php et je veut lancer scilab via php

kan je fais ça :
system('/home/tout/Téléchargements/scilab-5.1.1/bin/scilab -f ./simulation/simulation_morphologique/test.sce') ;

il m'affiche l'erreur suivant :
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

si tu trouve klk chose merci de le mettre ici et moi pareil

bonne chance
A+
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
25 mai 2010 à 16:50
moi ça a pas résolu mon problème, mais essaies :

$set_display = "set env DISPLAY=:0.0 && X : 0.0" ;
exec ($set_display) ;
system('DISPLAY=:0.0 /home/tout/Téléchargements/scilab-5.1.1/bin/scilab -f ./simulation/simulation_morphologique/test.sce') ;


redis moi le résultat
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
25 mai 2010 à 17:46
voilà le résultat :
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): couldn't connect to display ":0.0"

tu peux me dire tu veux faire koi ?? et cé koi set env DISPLAY=:0.0 && X : 0.0 ??
Merci
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
26 mai 2010 à 11:23
ben t'es sous linux ?
parce que moi mon interface marchait nickel sur windows, mais pour des raisons techniques j'ai dû passer sous linux (enfin machine virtuelle OpenSUSE)

j'ai entendu dire qu'Apache n'avait pas les droits nécessaires pour accéder au display (affichage graphique) de l'utilisateur courant, et il semblerait que scilab en ait besoin même si on veut lancer un script scilab en mode batch.

du coup dans la console il faut taper xhost +local:apache@

et dans le script php il faut rajouter ces lignes avant d'exécuter le script scilab pour pouvoir accéder au display :

$set_display = "set env DISPLAY=:0.0 && X : 0.0" ;
exec ($set_display) ;
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
26 mai 2010 à 11:24
et tu exécute de cette manière :

system('DISPLAY=:0.0 /home/tout/Téléchargements/scilab-5.1.1/bin/scilab -f ./simulation/simulation_morphologique/test.sce') ;
0
V4lkYr Messages postés 38 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 27 mai 2010
26 mai 2010 à 11:47
je peux pas t'aider j'en suis là moi aussi ça résoud pas mes problèmes :/

je t'envoie mes sources, cherche de ton coté ;)

http://bugzilla.scilab.org/show_bug.cgi?id=7145
http://forum.ubuntu-fr.org/viewtopic.php?id=174370 (à lire jusqu'au bout)
|I am posting this as I see quite a few people looking to create a web
based interface to their MP3 player (XMMS or really what ever you want
to call from the command line) on Linux. Alas, I am not the only one,
and I did not think of it first ( suppose I have to result to other get
rich quick schemes). And even if there were a direct downloadable
utility (as there is XMMS-Control) you, like me, probably want the bowl
of porage that is just right. Which means you want to make your own
because current versions of X, Y, or Z just don't do what you want.

Most of the hard work is at the linux command shell (ugh! - I heard
that! Drop and give me 20 command line scripts!)

login as root

ensure /dev/dsp has the proper access privileges
chmod a+rw /dev/dsp

add apache to the local list of users for the xserver.
xhost +local:apache@

You should see the following if apache is not added to the xserver.

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

** CRITICAL **: Unable to open display

And I am sure that error is as clear to you as it was to me!

NOTE !!! only change the following for testing purposes so that you can
su to apache from root and test xmms !!!!

Temporarily change the line

apache:x:48:48:Apache:/var/www:/sbin/nologin

To
apache:x:48:48:Apache:/var/www:/bin/bash

so that you can test out apache access to the Xserver and XMMS.

su apache
xmms
!!! Play a file - Don't just read this actually play a file!!! The
reason is that if it fails xmms will likely give an error you can track
down like a greyhound chases that little bunny at the dog track!
(speaking of get rich quick schemes)

And for the grand finale!

If you can call xmms from the command line you can likely do the
following (unless you are running php in safe mode). Ensure that the
wav, mp3, or whatever you decide to test it with is accessible to
apache. I put the file into /var/www/html/icould.wav and chmod a+rw
icould.wav

<?php
echo ' Executing XMMS ';
// note you could use system too!
//echo system( '/usr/bin/xmms --play icould.wav', $retval );
exec ('/usr/bin/xmms --play icould.wav');
?>

At your browser ensure you hit shift+refresh(button) so your browser
doesn't give you a cahed the web page.

Brian J. Davis|
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
26 mai 2010 à 11:53
ok merci à toi,
je te tiens au courant si je trouve la solution

bonne chance à nous :)
A+
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
26 mai 2010 à 15:39
essaye ce code :

system('HOME=/data/www/grainVirtuel /usr/bin/scilab -nwni -nouserstartup -f /data/www/grainVirtuel/simulation/simulation_morphologique/M.sce') ;

HOME=/data/www/grainVirtuel : l'endroit où apache a le droit d'écriture

chez moi ça marche et il gère les fichier des sorties.

dis moi si ça marche ou pas

A+
0