Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2011, 11h42   #1
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Par défaut Exec() ne charge pas le bon fichier

Bonjour à tous !

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

Code php :
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 :
1
2
3
<?php
 
echo 'SERVER_PWD: ' . $_SERVER['PWD'] . PHP_EOL;
contenu de "./index.php" :
Code :
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 ?
__________________
N'hésitez pas à me contacter !
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 16h36   #2
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Pouaah, ben ça se voit que je suis fatigué ces derniers temps ^^

J'ai résolu mon problème !!

Quand je testais en SSH j'écrivais forcément : "php -f <filename>"
Je copiais/collais cette commande dans shell_exec() et ça ne marchait pas... forcément "php -f" n'a rien à faire dans cette fonction


EDIT : mouais bon en fait, non. Ca ne marche toujours pas. La seule différence que j'ai maintenant c'est qu'il me dit bien que mon fichier n'existe pas si j'essaye de charger un fichier qui n'existe pas ou que je n'ai pas les droits (en changeant le chmod pour tester). A part ça, il ne charge toujours pas le bon :'(
__________________
N'hésitez pas à me contacter !
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 17h03   #3
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
En lisant toute la page du manuel PHP, j'ai fini par trouver quelque chose d'utile et qui fonctionne (parmi les plus vieux commentaires tout en bas >.<)

Solution : ajouter "env -i" à la commande.

Ce qui donne (dans mon cas) :
Code :
1
2
$command = "env -i /way/to/script/filename.php";
shell_exec($command);
__________________
N'hésitez pas à me contacter !
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h23.


 
 
 
 
Partenaires

Hébergement Web