Bonjour,

Sous linux j'ai besoin executer un script bash avec php

Voici ma page php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?php
echo exec('/home/serveur/Domotique/ordres/e1-on.sh');
sleep(20);
echo exec('/home/serveur/Domotique/ordres/e1-off.sh');
?>
Le script bash : e1-on.sh
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
#!/bin/bash
 
execution1="cm15 E1 on"
execution2="aplay /home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-allume.wav"
executable="e1-on"
 
case "$PROGRAMME" in
Asterisk) programme=Asterisk ;;
Crontab) programme="Crontab" ;;
php) programme="php" ;;
"") programme="Script bash" ;;
esac
 
utilisateur=$(whoami)
date1=$(date +'%Y-%m')
date2=$(date +'%d-%m-%Y - %H:%M:%S')
$execution1
echo "$date2 - $utilisateur - $execution1 - $executable - $programme" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log
$execution2
Ce que je ne comprend pas c'est que lorsque php execute le script bash seulement est executé dans le script bash alors que le reste du script non , il n'écrit pas dans le log et la lecture du son n'est pas lu.

Parcontre depuis le terminal lorsque je tape
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./home/serveur/Domotique/ordres/e1-on.sh
le script fonctionne correctement.

Exrait du fichier /var/log/apache2/error.log
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
root@debian:~# cat /var/log/apache2/error.log 
/home/serveur/Domotique/ordres/e1-on.sh: line 18: /home/serveur/Domotique/rapports/ordres/2012-07-rapport-ordres.log: Permission denied 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4649:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2190:(snd_pcm_open_noupdate) Unknown PCM default 
aplay: main:654: audio open error: No such file or directory 
/home/serveur/Domotique/ordres/e1-off.sh: line 18: /home/serveur/Domotique/rapports/ordres/2012-07-rapport-ordres.log: Permission denied 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4649:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2190:(snd_pcm_open_noupdate) Unknown PCM default 
aplay: main:654: audio open error: No such file or directory 
root@debian:~#
Quand je me conncete sur sur www-data c'est pareil
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
root@192.168.0.1's password: 
Linux debian 2.6.39.4 #1 PREEMPT Sat Apr 7 16:02:44 UTC 2012 armv5tel
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have mail.
Last login: Sun Jul  1 12:48:47 2012 from 192.168.0.2
root@debian:~# su - www-data
$ pwd
/var/www
$ whoami
www-data
$ aplay /home/serveur/Domotique/x10/son-confirmation/wav/lumiere-salle-informatique-allume.wav
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_card_driver returned error: Aucun fichier ou dossier de ce type
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_concat returned error: Aucun fichier ou dossier de ce type
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_refer returned error: Aucun fichier ou dossier de ce type
ALSA lib conf.c:4649:(snd_config_expand) Evaluate error: Aucun fichier ou dossier de ce type
ALSA lib pcm.c:2190:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:654: audio open error: Aucun fichier ou dossier de ce type
$ 
$ 
$ echo "$date2 - $utilisateur - $execution1 - $executable - $programme" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log        
-su: cannot create /home/serveur/Domotique/rapports/ordres/-rapport: Permission denied
$
Pourquoi ?
Comment puis je faire ?

Voila comment j'ai rèsolut mon problème
Avec dolphin j'était dans le dossier "/usr/bin/" puis j'ai fait un clique droit sur le fichier "aplay" puis j'ai cliquer sur "Propriété" et sur l'onglet "Droits d'accèes" puis sur le bouton "Droit d'accès avancés" la j'ai cocher les cases "Donner l'UID et Donner le GID" puis j'ai cliqué sur ok et encore sur ok.

Ensuite avec Avec dolphin j'était dans mon dossier ou ce trouve mon fichier log "/home/serveur/Domotique/rapports/ordres/" puis j'ai fait un clique droit sur le fichier log "2012-07-rapport-ordres.log" puis j'ai cliquer sur "Propriété" et sur l'onglet "Droits d'accèes" puis sur le bouton "Droit d'accès avancés" la j'ai cocher les cases "à écriture Groupe et Autres" puis j'ai cliqué sur ok et encore sur ok.

voici les droit du fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
-rw-rw-rw- 1 serveur serveur  1129  1 juil. 15:47 2012-07-rapport-ordres.log
J'ai donc une question, dans mon script le fichier ce crée tout seul ci la date change, l'année et le mois en cour (2012-07)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo "$date2 - $utilisateur - $execution1 - $executable - $programme" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log
Comment dois je faire pour qu'il est les droit suivant avec mon script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
-rw-rw-rw- 1 serveur serveur  1129  1 juil. 15:47 2012-07-rapport-ordres.log
Merci