Page 1 sur 1

fonction exec

Posté : 03 août 2016, 17:21
par Sohff
Bonjour,

Je voulais utiliser la fonction exec() pour effectuer des traitements assez complexe mais cela ne marche pas.

Par conséquent, j'ai essayé de l'utiliser tout simplement comme ceci mais cela ne fonctionne toujours pas.

Fichier executant test.php
<?php exec(getcwd().'/test.php'); ?>
Fichier test.php
<?php mkdir('getcwd()./Dossier_test');  ?>
Le fichier test.php fonctionne s'il est directement executé.

Avant de poster, j'ai recherché d'où cela pouvait provenir sans succès. Néanmoins, je peux vous préciser dans le phpini que le safe_mode est off, safe_mode_exec_value = no value et disable_functions = no value.

J'ai vraiment tout essayé, merci d'avance pour votre aide.

Re: fonction exec

Posté : 04 août 2016, 09:51
par moogli
salut,

quand tu dis
Le fichier test.php fonctionne s'il est directement executé.
tu entends :
- Exécuté en ligne de commande, dans un un terminal ? si oui comment fait tu ?
- Affiché dans un navigateur ?

si c'est le premier cas répondre a ma deuxième question devrait te fournir la solution :)

@+

Re: fonction exec

Posté : 04 août 2016, 10:08
par Sohff
Il fonctionne dans les deux cas. Pour le premier cas, je l'executais en fesant : php -f test.php.

Donc en mofidiant mon fichier executant avec cette commande cela marche (j'aurais du avoir la présence d'esprit de le tester avant #-o) :
<?php 
exec('php -f test.php');
 ?>
Voilà, merci beaucoup pour ton aide :D . Néanmoins, je ne comprends pas comment cela fonctionne ? La fonction exec permet d'executer des programmes et non d'executer une commande via le shell (fonction shell_exec).

Re: fonction exec

Posté : 04 août 2016, 10:19
par moogli
ton fichier n'est pas un executable du coup ça change rien. Globalement ce que tu fais dans une console tu fais la même chose avec exec. La différence entre exec et shell_exec est pas bien clair en dehors du fait de l'utilisation.
shell_exec c'est bien si tu veux récupérer directement le retour de la commande sur la sortie standard, exec va de refiler plus de chose, si tu le souhaites (dont le code de sortie, la sortie standard etc.).

si tu veux que cela fonctionne sans indiquer php devant il te faut un shebang (comme pour un script bash, perl ou autre).

@+

Re: [RESOLU] fonction exec

Posté : 04 août 2016, 11:37
par Sohff
D'accord, je comprends mieux. Merci beaucoup.
Sujet résolu =D>

A bientot.