Linux executer un script bash avec php exec
xunil2003
Messages postés
830
Statut
Membre
-
Nesquiik -
Nesquiik -
Bonjour,
Sous linux j'ai besoin executer un script bash avec php
Voici ma page php
Le script bash : e1-on.sh
Ce que je ne comprend pas c'est que lorsque php execute le script bash
Parcontre depuis le terminal lorsque je tape
Exrait du fichier /var/log/apache2/error.log
Quand je me conncete sur sur www-data c'est pareil
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
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)
comment dois je faire pour qu'il est les droit suivant avec mon script.
Merci
Sous linux j'ai besoin executer un script bash avec php
Voici ma page php
<?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
#!/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
e1-on.shseulement
execution1est 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
./home/serveur/Domotique/ordres/e1-on.shle script fonctionne correctement.
Exrait du fichier /var/log/apache2/error.log
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
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
-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)
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.
-rw-rw-rw- 1 serveur serveur 1129 1 juil. 15:47 2012-07-rapport-ordres.log
Merci
A voir également:
- Linux executer un script bash avec php exec
- Script vidéo youtube - Guide
- Linux reader - Télécharger - Stockage
- Mas script - Accueil - Windows
- Bingo bash free - Télécharger - Divers Jeux
- Easy php - Télécharger - Divers Web & Internet
3 réponses
Bonjour,
Sauf erreur de ma part et en espérant avoir tout compris !
Tu ne pourras pas exécuter un script shell qui se trouve dans une homedirectory avec PHP. Permission non autorisée.
1 - Il faut que le script soit dans le dossier de ton serveur web.
2 - L'utilisateur www-data en soit le propriétaire.
3 - pour être tranquille www-data doit exécuter le script en root.
Ce qui veut dire qu'il faudra éditer le fichier sudoers avec la commande : sudo visudo
Ajouter www-data comme utilisateur sans demander le mot de passe.
Faire très attention car c'est un fichier fragile faire une copie de sauvegarde avant.
@+
Sauf erreur de ma part et en espérant avoir tout compris !
Tu ne pourras pas exécuter un script shell qui se trouve dans une homedirectory avec PHP. Permission non autorisée.
1 - Il faut que le script soit dans le dossier de ton serveur web.
2 - L'utilisateur www-data en soit le propriétaire.
3 - pour être tranquille www-data doit exécuter le script en root.
Ce qui veut dire qu'il faudra éditer le fichier sudoers avec la commande : sudo visudo
Ajouter www-data comme utilisateur sans demander le mot de passe.
Faire très attention car c'est un fichier fragile faire une copie de sauvegarde avant.
@+