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

Fermé
Toine - 26 août 2003 à 18:09
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 23 janv. 2007 à 20:08
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
A voir également:

5 réponses

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
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266 > Toine
27 août 2003 à 12:33
Essayes le chemin absolu pour la commande perl... c'est elle qu'il ne connaît pas ;-)
0
Non c'était pas ça !

Réponse ici :

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

Merci quand même ;)
Toine
0
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
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
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
23 janv. 2007 à 20:08
Salut nath,

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