[RESOLU] fonction exec

Eléphanteau du PHP | 16 Messages

03 août 2016, 17:21

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 août 2016, 09:51

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 :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 16 Messages

04 août 2016, 10:08

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).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 août 2016, 10:19

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).

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 16 Messages

04 août 2016, 11:37

D'accord, je comprends mieux. Merci beaucoup.
Sujet résolu =D>

A bientot.