utilisation de exec

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : utilisation de exec

par jduv » 07 janv. 2009, 11:53

Bonjour à tous,

Merci pour vos réponses, je m'en suis sorti en utilisant la méthode de fab le
dirname(__FILE__);
J'ai donc placé ce code dans le repertoire depuis lequel doit se faire l'appel du programme à executer
//on stocke le repertoire courant pour pouvoir y revenir ensuite
$rep=getcwd();

//on change le dossier courant dans celui d'appel
chdir(dirname(__FILE__));

//execution
exec('../mon_prog');

//on revient dans le repertoire initial
chdir($rep);
:D
Il ya surement d'autres méthodes mais pour le moment celle-ci fonctionne et me convient bien

Encore merci
@+

par fab » 06 janv. 2009, 20:15

Le plus simple est d'utiliser dans ton fichier qui fait appel au programme en fortant
dirname(__FILE__); 
ainsi tu auras TOUJOURS le répertoire dans lequel se trouve le fichier prog.php ( si j'ai bien compris ) même si celui-ci est inclu dans un autre fichier :)


PS : Si tu utilises PHP 5.3.0 il existe la constante __DIR__ qui est le parfait équivalent de dirname(__FILE__)

par jojolapine » 06 janv. 2009, 18:42

Regarde du côté des variables SERVER, ça te permettra d'éxécuter ton script depuis n'importe quel dossier
(genre DOCUMENT_ROOT pour la variable ;) )
A voir aussi la fonction realpath(), fait des tests et tu y arriveras, j'ai confiance ;)

par Calimero » 06 janv. 2009, 18:09

Bonjour,

Si tu appelles un chemin relatif sur ton serveur, il est nécessaire de bien maîtriser le répertoire d'éxécution courant.

Pour cela, fais un
<?php echo getcwd() ?>
juste avant la ligne exec() pour visualiser quel est le répertoire courant de php, puis relance tes tests. Tu verras que ce n'est tout simplement pas le même, ce qui explique ton souci.

utilisation de exec

par jduv » 06 janv. 2009, 18:03

Bonjour à tous,
J'ai besoin de lancer un programme fait en fortran depuis un script php.
Le répertoire contenant l'executable est stocké sur le serveur sous la racine du site.
Le truc c'est que l'appel du script doit ce faire depuis un repertoire précis (un repertoire inférieur à l'executable),
j'ai donc placé un fichier prog.php dans ce repertoire qui contient :
 exec('../mon_prog');
si j'appel cette page
(http://mon_site/prog/prog.php)
depuis mon navigateur, le programme est bien executé,

mais si je fait l'appel depuis un autre page en faisant qlq chose comme
include 'prog/prog.php';
ou
require 'prog/prog.php';
rien ne se passe :?: et je ne comprend pas pourquoi
J'ai aussi essayer avec shell_exec mais sans succés.

Quelqu'un à t'il une idée sur le pourquoi ?

Merci d'avance