Bonjour,
Sous linux j'ai besoin executer un script bash avec php
Voici ma page php
Le script bash : e1-on.sh
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'); ?>
Ce que je ne comprend pas c'est que lorsque php execute le script bash
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 $execution2seulement
Code : Sélectionner tout - Visualiser dans une fenêtre à part e1-on.shest 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part execution1
Parcontre depuis le terminal lorsque je tapele script fonctionne correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./home/serveur/Domotique/ordres/e1-on.sh
Exrait du fichier /var/log/apache2/error.log
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 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:~#
Pourquoi ?
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 $
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
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 -rw-rw-rw- 1 serveur serveur 1129 1 juil. 15:47 2012-07-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 echo "$date2 - $utilisateur - $execution1 - $executable - $programme" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log
Merci
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
Partager