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" :
contenu de "./index.php" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?php echo 'SERVER_PWD: ' . $_SERVER['PWD'] . PHP_EOL;
Quand j'exécute le code via SSH (root ou user, peu importe) tout fonctionne correctement :
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'); ?>
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 ?
Partager