IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Exec() ne charge pas le bon fichier


Sujet :

Langage PHP

  1. #1
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    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 : 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 ?

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    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 :'(

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $command = "env -i /way/to/script/filename.php";
    shell_exec($command);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Doctrine] Doctrine_Core::loadData() ne charge pas tous mes fichiers
    Par ed_le_sec dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/09/2010, 19h12
  2. SQL Loader (ne charge pas tout mon fichier)
    Par ticed1979 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 19/08/2008, 09h33
  3. Réponses: 9
    Dernier message: 12/05/2006, 00h04
  4. Internet Explorer ne charge pas le fichier JS
    Par mr32 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/02/2006, 13h46
  5. Réponses: 2
    Dernier message: 21/04/2005, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo