Bonjour à tous !

J'essaie de faire exécuter un fichier via une ligne de commande, la voici :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$command = "/usr/local/php5/bin/php -s " . $_SERVER['DOCUMENT_ROOT'] . "/../private/test.php";
        $command = escapeshellcmd($command);
        $output = exec("" . $command . " &", $retArr);

Par soucis de facilité, j'ai mis ici "test.php", et l'option "-s" car j'avais un gros soucis que je ne comprenais pas (il chargeait sans cesse un fichier)

Grâce à l'option "-s" j'ai trouvé pourquoi il chargeait sans cesse le même fichier, c'est tout simplement qu'il ne charge pas le bon fichier.

Au lieu de charger "../private/test.php", il charge "./index.php"

contenu de "../private/test.php" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<?php
 
echo 'SERVER_PWD: ' . $_SERVER['PWD'] . PHP_EOL;
contenu de "./index.php" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?php
$defaultModule = "home";
$defaultTemplate = "default";
require_once('php/index.public.php');
?>
Quand j'exécute le code via SSH (root ou user, peu importe) tout fonctionne correctement :


Par contre, quand j'utilise la fonction exec(), il m'affiche le contenu de ./index.php :


Quelqu'un aurait-il déjà rencontré ce problème et pourrait m'aider à ce que exec() load le fichier que je lui demande ?