1. #1
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut Jouer un son sur le serveur depuis un script PHP

    Bonsoir à tous.

    J'aimerai savoir comment jouer un son (coté serveur) depuis une page PHP avec mplayer par exemple (je suis sous linux).

    J'ai essayé sans succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ("/usr/bin/mplayer /var/www/sound/bip.wav");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ("/usr/bin/mplayer sound/bip.wav");

    Je précise qu'à priori j'ai les bonnes permissions sur le fichier bib.wav ou encore sur son répertoire du moins je pense.

    Et que si je lance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mplayer /var/www/sound/bip.wav
    depuis un terminal, le son est correctement joué.

    Pour moi ça devrait marcher mais je me trompe peut être, si quelqu'un à une idée je suis preneur. Merci par avance pour l'attention que vous porterez à mon problème.

  2. #2
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut

    Encore une précision, visiblement c'est exec qui ne fonctionne pas, et je ne comprend pas pourquoi. Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec(usr/bin/n.importe.quel.programme);
    rien ne s'exécute. Je dois faire une erreur grossière quelque part mais je ne vois pas où.

    Edit: Je viens de regarder dans le fichier /etc/php5/apache2/php.ini

    safe_mode est sur Off et disable_functions est vide. Je ne comprend pas.
    Je précise que j'utilise Backtrack, je suis donc en root, je ne sais pas si ça peut jouer.

  3. #3
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut

    Bon, je reviens vers vous (oui-oui j'insiste lourdement) car vraiment je désespère avec cette fonction exec (mais c'est la même chose avec passthru ou system).
    Alors m'étant persuadé que le problème était lié à Backtrack, j'ai installé Apache sur Ubuntu pour tester. Le problème reste le même, donc l'erreur ne peut venir que de moi, et vraiment je nage.
    Par contre, je me suis apperçu de ça, comme je l'ai dis précédemment : Ne fonctionne pas, peu importe le programme avec ou sans le chemin (relatif ou non j'ai tout testé ça ne marche pas).
    Par contre (et c'est pour ça que je pense que c'est moi qui fais une erreur) si je fais: www-data s'affiche. Donc ça voudrait dire que exec fonctionne ou alors je ne comprend vraiment rien du tout.
    Bref, je suis complètement perdu, alors si quelqu'un à ne serait-ce qu'un début d'idée ou peu simplement m'éclairer un peu, je suis preneur.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 450
    Points : 42 321
    Points
    42 321

    Par défaut

    Justement : est-ce que www-data a le droit d'execution ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut

    Tout d'abord, merci pour ta réponse. Alors déjà, la, je me plantais, je pensais que www-data avait forcément les droit d'exécution (ne me demande pas pourquoi...)
    Alors ça ne marche toujours pas mais je pense que le problème vient de la, car voici ce que j'ai fais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo chown www-data:www-data  /var/www/Mon-site
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo chmod 755 /var/www/Mon-site/test.php
    dans test.php il y a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    exec('aplay sound/bip.wav');
    ?>
    Donc effectivement ça ne marche toujours pas, mais je pense que le problème vient de la car maintenant la page cherche quelques secondes avant de stopper, ce qui n'était pas le cas avant.
    Donc je te remercie, ta réponse va probablement m'aider à avancer, si je fais une autre erreur (notamment sur les bons droits et la commande à utiliser pour ça) ou si tu as une autre idée n'hésite pas à me le dire.
    Moi je vais gratter ça de mon coté (je viens seulement de voir ta réponse) et je reviens vers vous ensuite que je trouve ou non.
    Merci de ton attention en tout cas.

    A petite précision au cas ou, si je remet root comme propriétaire de www avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo chown root:root /var/www
    alors la page ne se charge à nouveau plus (actualisée en une fraction de seconde, ça ne cherche pas quoi).

  6. #6
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut

    Bon, pour être plus précis, les droits sont les suivants, pour www:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drwxr-xr-x  6 www-data www-data 4096 www
    Même chose pour www/Mon-site:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drwxr-xr-x 7 www-data www-data 4096  Mon-site
    et pour test.php c'est webadmin qui est le propriétaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -rwxrwxrwx webadmin www-data   test.php
    Mais si je change webadmin en www-data:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -rwxrwxr-x 1 www-data www-data     55 test.php
    Rien ne change. J'avoue avoir un peu de mal avec les droits... Merci de ton aide.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2012
    Messages : 771
    Points : 1 623
    Points
    1 623

    Par défaut

    Bonsoir,

    je pense que saboteur parlait des droits sur le fichier son et si www-data à le droit de lancer l'application mplayer, en passant il me semble que les fichiers php doivent avoir les droits 644 (rw-r--r--) et non 755 (rwxr-xr-x) qui sont réservés aux applications ou dossiers mais je peu me tromper.

    Une dernière chose n'oublie pas que tu est l'utilisateur www-data quand tu exécute ton script php donc tu n'a pas forcement les mêmes droits que l'utilisateur que tu utilise en tant qu'utilisateur courant.
    une réponse vous a permis d'avancer ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 450
    Points : 42 321
    Points
    42 321

    Par défaut

    Utilise passthru pour voir si tu as un retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    passthru('aplay sound/bip.wav', $result);
    ecoh $result;
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut

    Merci à vous... Alors:

    @Exia93 Je viens de réessayer sans succès (avec 755 pour être le plus permissif possible pour tester) en ayant exécuté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo chmod 755 /var/www/Mon-site/sound/bip.wav
    Et en ayant relancé apache bien que ça ne soit pas nécessaire (du moins je pense).

    @sabotage J'ai juste 0 en retour du echo, je précise que je n'arrive à utiliser ni exec, ni passthru et ni system. Mais je pense que le problème se situe bien au niveau des droits.

    Merci à vous de vous pencher sur mon problème.

    Edit: Je ne sais pas si ça peut jouer, dans apache2.conf j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    User ${APACHE_RUN_USER}
    Group ${APACHE_RUN_GROUP}
    J'ai essayé de changer en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    User www-data
    Group www-data
    en relançant apache, ca n'y change rien (j'ai donc remis à l'origine).

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 450
    Points : 42 321
    Points
    42 321

    Par défaut

    Le droit d'execution c'est sur aplay qu'il doit porter.
    Utilise de plus le chemin d'accès complet au programme.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    bidouilleur
    Inscrit en
    novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 44
    Points : 24
    Points
    24

    Par défaut

    Merci encore pour ton attention...
    Alors, j'ai porté les droits suivants sur /usr/bin/aplay:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -rwxr-xr-x 1 www-data www-data 55296  aplay
    J'ai essayé aussi de mettre une copie de aplay dans www/mon-site/aplay avec les droits suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -rwxrwxr-x 1 www-data www-data 55296  aplay
    et dans test.php j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    exec('aplay sound/bip.wav');
    exec('aplay /var/www/Mon-site/sound/bip.wav');
    exec('/usr/bin/aplay sound/bip.wav');
    exec('/usr/bin/aplay /var/www/Mon-site/sound/bip.wav');
    ?>
    Et rien n'y fait, ça ne marche pas...

  12. #12
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 28
    Points : 23
    Points
    23

    Par défaut Meme problème, quelques années plus tard...

    Je fait un script php, ca marche et le wav est bien créé (TTS) mais la lecture ne se fait pas.

    aplay

    vous aviez trouver une explication ?...

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 450
    Points : 42 321
    Points
    42 321

    Par défaut

    Quel est le retour du exec ?
    Utilise en particulier le paramètre output pour essayer de voir ce qui se passe :
    http://php.net/manual/fr/function.exec.php

    Il est très possible qu'il faille des droits pour accéder au son sur linux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    4 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 4 581
    Points : 11 730
    Points
    11 730

    Par défaut

    Le premier test à faire serait d’exécuter la commande que tu veux lancer en php dans un terminal en étant l'utilisateur du serveur web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    su - www-data
    aplay sound/bip.wav
    Si ca ne marche pas depuis un terminal tu peux lancer tous les exec que tu veux , ca ne fonctionnera jamais.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Lancer un exe sur le serveur depuis une page PHP
    Par Bundy*Al dans le forum Apache
    Réponses: 1
    Dernier message: 27/04/2010, 08h27
  2. Réponses: 0
    Dernier message: 26/03/2010, 10h33
  3. jouer un son sur une image passage souris
    Par ideal23 dans le forum JavaScript
    Réponses: 10
    Dernier message: 16/11/2009, 08h37
  4. Jouer un son sur le micro
    Par benji_11 dans le forum Windows
    Réponses: 5
    Dernier message: 05/09/2007, 16h53
  5. executer une commande sur un serveur depuis une page web
    Par nico33410 dans le forum Général Conception Web
    Réponses: 12
    Dernier message: 21/04/2007, 19h02

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