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 :

la commande exec()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Par défaut la commande exec()
    Bonjour à tous,
    Je souhaite exécuter un fichier externe d'extension(.php) dans mon fichier "main.php".
    Je m'explique: suivant une condition IF un seul fichier va être exécuter.càd IF(){exec(...);}ELSE{exec(...);}

    EXP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function det_famille($ligne,$nb)
    {
    $famille='';
    for($i=0; $i<=$nb; $i++)
    {if( (stristr($ligne[$i],'built')) && (stristr($ligne[$i],'tcp connection')) ==TRUE) 
    	{$famille='F1';
    	 $_SESSION["li1"]=$ligne[$i];//utiliser cette var ds un autre programme
    	 exec('C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php');
    	}
      elseif((stristr($ligne[$i],'built')) && (stristr($ligne[$i],'icmp connection')) ==TRUE)
    	{$famille='F2';
    	 $_SESSION["li2"]=$ligne[$i];//utiliser cette var ds un autre programme
    	 exec('C:\Program Files\EasyPHP-5.3.3.1\www\famille2.php');	
    	}  
      }//fin fonction
    Est ce que la construction est juste(car aucun résultat n'est affiché)? Est ce qu'il y a d'autres syntaxes qui me permet d'achever cette tâche!
    Merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pourquoi exec un include fait l'affaire ?

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    exec() lance un exécutable. Pourquoi tu n'utilises pas plutôt require() qui inclut et interprète tes scripts php familleX.php ?
    Le fait de faire : exec('C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php');
    revient à essayer de lancer le fichier en tant qu'exécutable, ce qui n'est pas possible. Si tu veux vraiment exécuter ton script php sans passer par ton serveur Web, tu peux le lancer depuis l'éxécutable php, un truc du style : 'php.exe C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php'' mais je ne pense que ce n'est pas ce que tu veux à la base

  4. #4
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    Comme te le dis Djakisback, tu n'as besoin d'un exec pour cela, un include + l'appel de la fonction contenu dans le fichier devrait suffire.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Par défaut
    salut,
    Merci pour vous tous d'avoir répondre si vite!
    Bon! j'opte pour utiliser require mais la question est dois-je l'écrire de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require 'famille1.php';
    ou de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require 'C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php';
    sachant que"famillex.php" a le même emplacement que"main.php" .
    J'ai ajouter cette condition suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (is_file("C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php"))
    		{echo "fichier existe";}
    		else
    		{echo "fichier n'existe pas";}
    ==> resultat:fichier n'existe pas
    Dois-je faire quoi?

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Pour les includes avec des chemins relatif cela dépend fortement de l'emplacement du fichier appelé et du fichier appelant.
    S'ils sont tous deux au même niveau (càd dans un même répertoire) ou pas.


    Pour les includes des chemins absolus prend bien soin d'éviter les '\', préfère les '\\' ou les '/' càd, évites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require 'C:\Program Files\EasyPHP-5.3.3.1\www\famille1.php';
    au profit de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require 'C:\\Program Files\\EasyPHP-5.3.3.1\\www\\famille1.php';
    ou de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require 'C:/Program Files/EasyPHP-5.3.3.1/www/famille1.php';

  7. #7
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 49
    Par défaut
    Un grand merci à vous (Thes32)
    Le fichier appelé et le fichier appelant sont placés dans le même rep donc inutile d'indiquer le chemin ''C:/./...''! mais le problème de fichier non existant persiste toujours.
    J'ai vérifié mais j'ai pas su où le problème réside!!
    Une idée svp!!

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

Discussions similaires

  1. [TP] Commande exec : exécuter un batch de manière invisible
    Par freezerhm dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 18/03/2007, 14h18
  2. [Système] Commande exec distant
    Par fifi774 dans le forum Langage
    Réponses: 4
    Dernier message: 04/01/2007, 10h19
  3. [Système] commande exec en arriere plan
    Par dgedge dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2006, 14h45
  4. Réponses: 10
    Dernier message: 02/03/2006, 11h36
  5. [Système] commande exec()
    Par Stef784ever dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2005, 10h53

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