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 :

Exécuter une commande linux avec php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Exécuter une commande linux avec php
    Bonjour, tout le monde. Je vous remercie d'avance pour votre aide.

    Problème:
    Je voudrais lancer un script python depuis php. Le script python fonctionne quand je le lance depuis la ligne de commande sous ubuntu.

    Voici le code php pour lancer le script python(qui donc ne fonctionne pas):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    chdir("/var/www/site/script/python/"); //je me place dans le bon repertoire
    $cmd="./script_python.py";
    $pid=exec($cmd,$output,$return_var); //je lance le script python
    if($return_var!=0){
     print_r($output);
     echo $pid;
    }else{
     print_r($output);
    ?>
    }
    Ce qui est assez enfin peut être "étrange" quand la commande est "simple" exemple $cmd="ls -l" la variable $ouput envoie bien le resultat de ls -l. Tandis que lorque $cmd="./script_python.py" quand je lance mon script php dans firefox il tourne et ne s'arrête pas.

    Je ne sais pas si il est nécessaire de déposer mon script python ici vu qu'il fonctionne très bien lancé en ligne de commande je ne pense que cela vienne de lui. Si vous croyez que ce n'est pas le cas je le posterai volontier.( Ce script python converti une vidéo quelconque en flv ,prend une petite image de la vidéo et manipule une base de donnée.)

    Voilà j'espère que j'ai été assez précis. Merci à vous.

    Edit:
    Rebonjour, j'ai recodé mon script python en php et le problème viendrai des commandes ffmpeg que je lance dans exec il semblerai qu'elle ne s'exécute pas.(Néanmoins la commande marche bien quand je suis sur la console).
    Voilà le code:
    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
    <?php
    include('connection_bdd.php');
    function ffmpeg_convertion_video($adresse_origine,$adresse_final){
    	$adresse_origine=mysql_real_escape_string($adresse_origine);
    	$adresse_final=mysql_real_escape_string($adresse_final);
    	chdir("/var/www/");
    	$cmd=' ffmpeg -i '.$adresse_origine.' -sameq '.$adresse_final.' ';
    	$pid=exec($cmd,$output,$return_value);
    	if($return_value!=0){
    		echo "Dernière erreur:".$pid;
                    print_r($output);
    	}else{
    		print_r($output);
    	}
    }
    function ffmpeg_image_video($adresse_origine,$adresse_final){
    	$adresse_origine=mysql_real_escape_string($adresse_origine);
    	$adresse_final=mysql_real_escape_string($adresse_final);
    	chdir("/var/www/");
    	$cmd=' ffmpeg -i '.$adresse_origine.' -sameq -vcodec mjpeg -vframes 1 -an -f rawvideo -ss 30 '.$adresse_final.' ';
    	$pid=exec($cmd,$output,$return_value);
    	if($return_value!=0){
    		echo "Dernière erreur:".$pid;
                    print_r($output);
    	}else{
    		print_r($output);
    	}
    	}
     ffmpeg_image_video($path,$path_final);
    ffmpeg_conversion_video($path_video,$path_video_final);
    ?>
    D'après mes essais $return_value=1.
    Le print_r($output) me renvoie un Array() vide et $pid ne renvoie rien.
    Cela doit venir des droits mais je ne vois pas comment faire j'ai mis tout les droits à tout le monde sur le fichier php.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    as-tu essayé les chemins absolus?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Oui j'ai essayé. Mais c'est toujours pareil.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Salut,

    à mon avis c'est l'utilisateur apache (www-data par défaut) qui n'a pas les droits d'écriture dans le dossier où sont créés les fichiers de sortie.

    As tu essayé de les lui attribuer ?
    chown www-data:www-data /var/www/ par exemple.

    ++
    Sliim

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Merci de ta réponse Sliim c'est parfait le problème était là.Sujet résolu !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 28/04/2009, 10h20
  2. Réponses: 1
    Dernier message: 21/08/2007, 19h02
  3. [Système] Exécuter une commande java avec exec()
    Par kenny49 dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2007, 10h29
  4. Exécuter une commande système avec perl
    Par Olivier Regnier dans le forum Langage
    Réponses: 12
    Dernier message: 08/04/2007, 17h41
  5. Exécuter une commande linux.
    Par casafa dans le forum Linux
    Réponses: 4
    Dernier message: 21/07/2005, 00h13

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