Page 1 sur 1

EXEC

Posté : 12 févr. 2008, 17:54
par jcb
bonjour,

j'exploite les données d'un GPS avec le programme GpsBabel. Comme ce dernier ne fonctionne qu'en ligne de commande, je souhaite développer une interface en PHP.
Pour lancer la ligne de commande qui va bien j'utilise la méthode exec(). Voici ce que celà donne:
exec("gpsbabel -h", $table); retourne toutes les instructions d'aide sans pb.
exec("gpsbabel -t -w -r -i garmin -f /dev/ttyUSB0 -o gpx -F dimanche_10_02_08.gpx");
retourne un message d'erreur du type pas de connexion avec le gps (en mode ligne de commande, la me instruction fonctionne normalement. Il s'agit d'une suite d'instructions destinées à récupérer les données pour les enregistrer sur un disque)
J'ai essayé les alternatives à la méthode exec(), sans succès. J'ai écrit un fichier batch: lancé en ligne de commande tout fonctionne et échoue lorsqu'il est lancé par exec.

La fonction exec() ne peut elle lancer que des instructions simples? sinon comment faire ?

avec mes remerciements anticipés

Posté : 13 févr. 2008, 00:44
par Hywan
Est-ce qu'on pourrait voir l'erreur exactement :-k ?

Posté : 17 févr. 2008, 12:21
par Invité
Bonjour,

le code retourné est 157. On obtient la même erreur en lançant l'instruction de transfert, sans connecter le GPS.

Posté : 17 févr. 2008, 15:07
par Ryle
La fonction exex() sert a faire exécuter une commande par le système, et à ma connaissance, php se moque royallement de savoir si cette commande est simple ou complexe... (et y a pas beaucoup plus simple comme commande que de demander l'exécution d'un shell :))

La question que tu dois te poser à mon avis, est de savoir pourquoi est-ce que toi, quand tu es connecté avec ton compte à toi et tes permissions à toi, tu arrives à exécuter la commande, alors que quand c'est php qui tente de l'exécuter avec son compte et ses droits à lui, il n'y parvient pas :)

Posté : 17 févr. 2008, 22:55
par Invité
merci pour ta réponse mais ce qui me gêne dans ce cas c'est pourquoi une instrucion de tupe - help fonctionne avec exec et pas les autres ?