[PERL] problème avec la fonction exec()

Toine -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

Je n'arrive pas à utiliser la fonction exec(). Elle n'arrive jamais à trouver le programme à executer, même si celui-ci est "à côté" du programme PERL en cours d'execution.

Par exemple, j'ai :
p1.pl
p2.pl

je lance p1.pl via un navigateur (serveur web apache)
dans celui-ci, j'écris :
exec ("perl ./p2.pl",@ARGLIST)

et ça ne marche pas !

Code:
[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] Can't exec "perl ./processmail.pl": No such file or directory at

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] f:\PROGRA~1\easyphp\www\bugzilla\post_bug.cgi line 305 (#1)

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] (W exec) A system(), exec(), or piped open call could not execute the

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] named program for the indicated reason. Typical reasons include: the

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] permissions were wrong on the file, the file wasn't found in

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] $ENV{PATH}, the executable in question was compiled for another

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] architecture, or the #! line in a script points to an interpreter that

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] can't be run for similar reasons. (Or maybe your system doesn't support

[Tue Aug 26 18:03:01 2003] [error] [client 192.168.0.103] #! at all.)


Merci pour votre aide !
Toine

5 réponses

pouet
 
salut,

au hasard, as tu verifie les permissions? verifie que ton script se trouve dans $ENV{PATH}? as tu essaye de mettre un chemin absolu?

--
pouet
1
Toine
 
Bonjour !

Merci de bien vouloir m'aider !

>> au hasard, as tu verifie les permissions?
je suis sous windows (désolé)

>>verifie que ton script se trouve dans $ENV{PATH}?
oui c'est ok maintenant

>>as tu essaye de mettre un chemin absolu?
oui j'ai essayé !


Voilà la ligne qui m'embête :

exec ('perl "F:/Program Files/EasyPHP/www/bugzilla/processmail.pl"', @ARGLIST)


[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] Can't exec "perl "F:/Program Files/EasyPHP/www/bugzilla/processmail.pl"":

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] Invalid argument at f:\PROGRA~1\easyphp\www\bugzilla\post_bug.cgi line 305 (#1)

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] (W exec) A system(), exec(), or piped open call could not execute the

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] named program for the indicated reason. Typical reasons include: the

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] permissions were wrong on the file, the file wasn't found in

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] $ENV{PATH}, the executable in question was compiled for another

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] architecture, or the #! line in a script points to an interpreter that

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] can't be run for similar reasons. (Or maybe your system doesn't support

[Wed Aug 27 10:29:48 2003] [error] [client 192.168.0.103] #! at all.)



Peux tu m'aider s'il te plait ?
Toine
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277 > Toine
 
Essayes le chemin absolu pour la commande perl... c'est elle qu'il ne connaît pas ;-)
0
Toine
 
Non c'était pas ça !

Réponse ici :

http://www.developpez.net/forums/viewtopic.php?p=589614#589614

Merci quand même ;)
Toine
0
Mellyben
 
Si perl est installé dans c:\perl alors la fonction exec() recherche dans c:\perl puis dans le path , mais attention si tu utilises un prog comme winat alors il, cherche par defaut dans %windir%, le mieux et d'utiliser la fonction suivante:
@argv = "ping -t www.google.com"
$resultat = system(@argv);
if(! $resultat) die "Pas bon";
attention de faire un choix judicieux entre chamins relatifs et absolus pour tes executables.
0
jérôme
 
Bonjour,
Je programme actuellement en Perl et dans mon programme Perl, je dois lancer simultanément d'autres programmes.
Cependant, je ne sais pas si une fonction pouvant réaliser ceci existe déjà ou si il y a une autre manière de faire.

Merci pour votre aide!
0

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

Posez votre question
nath
 
il existe un tas de maniere de lancer un programme en perl:
1) open (RIEN, "| le_nom_du_prog");
2) `le_nom_du_prog`
attention c'est le caractère se trouvant sur AltGr+7
...
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut nath,

je pense que depuis 2003, il a trouvé la solution :-)
0