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 :

[Système] Exécution d'un script SHELL avec PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut [Système] Exécution d'un script SHELL avec PHP
    Bonjour je voudrais savoir pourquoi mes echo ne s'affiche pas et pourquoi shell ne me rend pas la main.


    Je m'explique : je voudrais savoir comment exécuter un script shell avec php.
    J'ai essayer des méthodes qui fonctionnent "partiellement" mais pas parfaitement.

    ex : la commande S3DServer_script start & qui fonctionne très bien dans le Shell.


    Je fais un fichier test.php avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$cmd2="S3DServer_script start &";
               			exec($cmd2);
                                           exit;
    la commande start est exécutée partiellement (elle sert a relancer le serveur et elle relance le serveur) mais shell ne me rend pas la main même si je met un exit après la commande et le exec n'affiche pas les echo dans le fichier shell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    start)
    		if [ -e $S3DServerLife ]; then
    			echo "S3DServer Advanced 1.5.1 for Linux seems to be running";			echo "If you are sure the server is not running, delete $S3DServerLife"
    			exit 1
    		else
    			echo "Starting S3DServer Advanced 1.5.1 for Linux"
    			if [ -e S3DServer-1.5.1-Advanced-Linux ]; then
    				if [ ! -x S3DServer-1.5.1-Advanced-Linux ]; then
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, trying to set it"
    					chmod u+x S3DServer-1.5.1-Advanced-Linux
    				fi

    S3DServer Advanced 1.5.1 for Linux seems to be running"; n'est jamais affiché , etc...


    Donc je voudrais savoir pourquoi mes echo ne s'affiche pas et pourquoi shell ne me rend pas la main. (je mets bien le exit et j'ai testé aussi avec shell_exec)

    Merci.

  2. #2
    Membre actif Avatar de leodi
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 224
    Points
    224
    Par défaut
    Bonjour,

    Citation Envoyé par diabli73 Voir le message
    Donc je voudrais savoir pourquoi mes echo ne s'affiche pas.
    Rtfm

    http://fr.php.net/manual/fr/function.exec.php

    $output_last_line = exec('ls -l', $output_array);

    print_r($output_last_line);
    print_r( $output_array);

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    Merci j'ai essayé aussi avec passthru('S3DServer_script start & ');

    et maintenant je vois mes echo.

    mais le shell ne me rend toujours pas la main.

    par contre avec exec cela ne fonctionne pas car après il ne lance pas le print ou le echo qui se trouve après le exec.

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    leodi j'ai essayé ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $output_last_line = exec('ls -l', $output_array);
     
    print_r($output_last_line);
    print_r( $output_array);
    ça fonctionne bien.


    Mais avec ma commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $output_last_line = exec('S3DServer_script start &', $output_array);
     
    print_r($output_last_line);
    print_r( $output_array);
    cela n'affiche pas les echo et le shell ne me rend pas la main.


    sinon avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    passthru('S3DServer_script start &  ');
    cela affiche les echo mais je ne récupère toujours pas la main, et je ne peux pas lancer le fichier 2 fois

  5. #5
    Membre actif Avatar de leodi
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 224
    Points
    224
    Par défaut
    C'est au niveau de ton script alors. Esseye de le débugger (variable d'environnement, utilisateur...).
    Après je ne sais pas comment ça se passe au niveau de la sortie d'erreur.
    Si quelqu'un a déjà essayé...

  6. #6
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    mon script shell c'est

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    start)
    		if [ -e $S3DServerLife ]; then
    			echo "S3DServer Advanced 1.5.1 for Linux seems to be running";
    			echo "If you are sure the server is not running, delete $S3DServerLife"
    			exit 1
    		else
    			echo "Starting S3DServer Advanced 1.5.1 for Linux"
    			if [ -e S3DServer-1.5.1-Advanced-Linux ]; then
    				if [ ! -x S3DServer-1.5.1-Advanced-Linux ]; then
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, trying to set it"
    					chmod u+x S3DServer-1.5.1-Advanced-Linux
    				fi
    				if [ -x S3DServer-1.5.1-Advanced-Linux ]; then
    					./S3DServer-1.5.1-Advanced-Linux &
                        for c in $(seq 1 300); do
                            if [ ! -e $S3DServerLife ]; then
                                echo -n "."
                                sleep 1
                            else
                                echo "done"
                                break
                            fi
                        done
    				else
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, fix this"
    					exit 4
    				fi
    			else
    				echo "Couldnt find S3DServer-1.5.1-Advanced-Linux"
    				exit 5
    			fi
    		fi
    	;;
    Il y a des exit partout donc jsutement il devrait rendre la main.


    et justement ce script executé directement sour SHELL fonctionne parfaitement.

Discussions similaires

  1. Lancer un script shell avec php
    Par jojo971 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/10/2010, 10h15
  2. [Système] Exécution d'un script linux sous php
    Par 123654789 dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2008, 15h56
  3. [Système] Exécution d'un script PHP distant
    Par SimOOn dans le forum Langage
    Réponses: 9
    Dernier message: 29/05/2007, 16h53
  4. [Système] Exécution d'un script PHP à heures fixes
    Par Kiyomizu dans le forum Langage
    Réponses: 5
    Dernier message: 26/04/2006, 09h30
  5. [Système] Lancer un script perl avec PHP
    Par pepite dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 12h30

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