Aller au contenu


Photo
- - - - -

RasPi avec Apache et CGI


  • Veuillez vous connecter pour répondre
33 réponses à ce sujet

#21 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 14 octobre 2015 - 02:24

Salut,
 

(...)
alors j'ai bien les fichiers crée , cela fonctionne en ligne de commande et j'ai bien 2 fichiers logs avec rien dedans ! j'ai bien la photo aussi !
ensuite j efface les 2 logs et la photo et j essaye a partir de la page php ! à partr de la page php j'ai testé avec system et exec !
j'ai rien du tout ni photo ni log
(...)


Récupère le retour de ta commande system/exec pour vérifier ce qu'elle renvoie (lire la doc des commandes). Mets un "else" à ton if pour vérifier quand tu es dans ce cas. J'imagine que tu as testé en n'oubliant pas de mettre du texte dans le champ correspondant ?
Tu peux faire un echo de la variable $POST['variable'] pour vérifier qu'elle passe bien juste-là.
Par ailleurs, attention à l'exécution de commande système dans lesquelles rentre du texte d'un utilisateur tiers. Il faut bien penser à traiter le texte en question pour éviter les injections de code par formulaire. SURTOUT quand tu exécutes avec un sudo, sans password et n'importe quelle commande (ALL).
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#22 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 14 octobre 2015 - 03:38

J'ai trouvé, je suis trop fort.

Mais je vous le dirais pas la solution :nono:



#23 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 14 octobre 2015 - 03:44

Oui je sais mon humour est complétement nul.

 

Sauf erreur de copier/coller

 

dans le script PHP il ne faut pas faire référence à la zone de texte

if (isset($_POST['variable']))

il faut faire référence au submit

if (isset($_POST['valider']))
	{
	echo "test";
	system("sudo python /media/share/raspistill.py");
	}

Si le "test" du echo apparaît c'est que c'est bon

 

Maintenant je rejoins complétement les propose de R1D1

Il faudra ajuster au plus juste les droits en modification dans /etc/sudoers et faire un controle des variables $_POST.


 

 

Par ailleurs, attention à l'exécution de commande système dans lesquelles rentre du texte d'un utilisateur tiers. Il faut bien penser à traiter le texte en question pour éviter les injections de code par formulaire. SURTOUT quand tu exécutes avec un sudo, sans password et n'importe quelle commande (ALL).

 

 

Les échanges dans ce post n'ont pas vocation à devenir les lignes de codes d'un produit fini.



#24 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 14 octobre 2015 - 06:06

oui je comprends bien c'est juste pour test à la base je veux juste executer un cgi à partir d'une page web php ou html !

 

sinon oui j'ai testé comme ceci !

<?php
ini_set('display_errors', 1);
if (isset($_POST['valider']))
	{
	echo "test";
	system("sudo python /media/share/raspistill.py");
	}
?>
<html>
<head><title>KBOT</title></head>
<body>
   <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
      <input type='text' name='variable'> 
      <input type='submit' name='valider'>
   </form>
</body>
</html>

j'ai bien le test qui apparait qd je valide !

mais tjrs rien au niveau du script !

 

je remets les log apache !

[Wed Oct 14 13:09:10 2015] [notice] caught SIGTERM, shutting down
[Wed Oct 14 13:09:39 2015] [error] python_init: Python version mismatch, expected '2.7.2+', found '2.7.3'.
[Wed Oct 14 13:09:39 2015] [error] python_init: Python executable found '/usr/bin/python'.
[Wed Oct 14 13:09:39 2015] [error] python_init: Python path being used '/usr/lib/python2.7/:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/pyt$
[Wed Oct 14 13:09:39 2015] [notice] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
[Wed Oct 14 13:09:39 2015] [notice] mod_python: using mutex_directory /tmp
[Wed Oct 14 13:09:40 2015] [notice] Apache/2.2.22 (Debian) PHP/5.4.45-0+deb7u1 mod_python/3.3.1 Python/2.7.3 configured -- resuming normal operations
[Wed Oct 14 16:57:54 2015] [error] [client 192.168.1.3] File does not exist: /var/www/favicon.ico, referer: http://192.168.1.27/index.php
sudo: effective uid is not 0, is sudo installed setuid root?
sudo: effective uid is not 0, is sudo installed setuid root?
sudo: effective uid is not 0, is sudo installed setuid root?
sudo: effective uid is not 0, is sudo installed setuid root?


ca doit venir de : sudo: effective uid is not 0, is sudo installed setuid root?

 

 

cdlt,

bypbop



#25 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 14 octobre 2015 - 08:41

Bon là c'est vraiment bizarre

 

Mais il semble que tu ne soit pas le seul

http://stackoverflow.com/questions/2230391/php-shell-exec-and-sudo-must-be-setuid-root

http://webkul.com/blog/sudo-su-results-effective-uid-0-sudo-installed-setuid-root/

 

Et si tu remplace dans la page en PHP raspistill.py par un autre de tes programmes qui fonctionne qu'est ce que ça donne.

 

Ces derniers jours as-tu relancé un upgrade

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade && sudo apt-get autoremove

Bon je suis un peu largé, je vais me refaire une installation depuis la base et je vais voire ce que ça donne



#26 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 15 octobre 2015 - 12:38

oui j'ai fait un update et un upgrade avant de commencer les cgi ! car ca faisait pas mal de temps que j'avais pas utilisé ma rasPpi

 

Oui j'avais fait qques recherches et je suis retombé sur ce problème mais bon sans savoir si ca venait bien de la !!

 

merci de ton aide

 

cdlt,

bypbop



#27 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 16 octobre 2015 - 09:49

Là je craque

 

chez moi ça marche et je suis reparti depuis le dédut avec une raspberry B

 

1) formatage avec l'image 2015-02-16-raspbian-wheezy.img

 

2) dans raspi-config

   - expand Filesystem

   - enable camera -> enable

   - advance option

         - SSH -> enable

         - update

 

3) sudo nano /etc/default/keyboard

   remplacement de gb par fr

 

4) sudo reboot

 

5) sudo apt-get update && sudo apt-get upgrade -y

 

6) sudo nano /etc/network/interfaces

   paramétrage d'une adresse static

 

7) sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade && sudo apt-get autoremove

 

8) sudo apt-get install apache2 php5 libapache2-mo-php5 -y

    correction : sudo apt-get install apache2 php5 libapache2-mod-php5 -y

 

9) cd media

    sudo mkdir share

    cd share

    sudo mkdir camera

 

10) sudo nano /etc/sudoers

      ajout de : www-data ALL = NOPASSWD: ALL

 

11) sudo nano /media/share/raspistill.py

#!/usr/bin/env python
import os
import time
import subprocess
cmd = 'raspistill -w 640 -h 320 -o /media/share/camera/photo.jpg 1>/media/share/raspistill_ok.txt 2>/media/share/raspistill_error.txt'

pid = subprocess.call(cmd, shell=True)

12) sudo python /media/share/rasptistill.py

   ok -> la photo dans le répertoire camera et les deux fichiers txt

 

13) controle paranoiaque -> modification de la cmd en indiquant un mauvais répertoire pour la photo

cmd = 'raspistill -w 640 -h 320 -o /media/share/camera2/photo.jpg 1>/media/share/raspistill_ok.txt 2>/media/share/raspistill_error.txt'

14) sudo nano /media/share/raspistill_error.txt

   presence de lignes confirmant l'erreur de répertoire

 

15) remise en place de cmd + sudo rm /media/share/raspistill_ok.txt + sudo rm /media/share/raspistill_error.txt

 

16) sudo nano /var/www/index.php

<?php

if (isset($_POST['valider']))
	{
	echo "test";
	system("sudo python /home/pi/raspistill.py");
	}
?>
<html>
<head><title>KBOT</title></head>
<body>
   <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
      <input type='submit' name='valider'>
   </form>
</body>
</html>

17) dans firefox ip_raspberry/index.php

   clique sur le bouton

 

18) ls -l /media/share

   les deux fichiers txt sont de retour

 

Franchement je n'ai rien fait de plus donc je suis complétement largué sur le problème.



#28 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 16 octobre 2015 - 10:03

je viens même de modifier les scripts pour plus de fun

#!/usr/bin/env python
import os
import time
import subprocess
cmd = 'raspistill -w 640 -h 320 -o /var/www/photo.jpg 1>/media/share/raspistill_ok.txt 2>/media/share/raspistill_error.txt'

pid = subprocess.call(cmd, shell=True)

et le php

<?php

if (isset($_POST['valider']))
	{
	echo "test";
	system("sudo python /home/pi/raspistill.py");
	}
?>
<html>
<head><title>KBOT</title></head>
<body>
   <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
      <input type='submit' name='valider'>
   </form>
   <img src="photo.jpg" alt="Smiley face" height="150" width="300"> 
</body>
</html>


#29 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 18 octobre 2015 - 04:03

Merci Gyro49 !

 

C'est vraiment bizarre je vais faire du coup :-( un reinstallation complète !!

 

Cordialement,

bypbop



#30 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 21 octobre 2015 - 09:05

Bonsoir Gyro49,

 

je suis en train de reinstaller la raspi !

 

j ai ceci à la 8eme étape :

root@raspberrypi:~# sudo apt-get install apache2 php5 libapache2-mo-php5 -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libapache2-mo-php5
root@raspberrypi:~#

il y a surement une erreur de frappe ;-)

 

cdlt,

bypbop



#31 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 21 octobre 2015 - 09:12

bonsoir

 

en effet

il faut un "d" à mod

sudo apt-get install apache2 php5 libapache2-mod-php5 -y


#32 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 21 octobre 2015 - 09:14

Pas besoin d'installer python ?

 

Apparement non !!! cela fonctionne !! je ne comprends pas lol  :kez_13:  :kez_13:  :kez_13:  :kez_13:

 

j'ai fait pareil !  :diablo:  :diablo:  :diablo:

 

merci bcp !!! je vais pouvoir travailler un peu avec les cgi sur la rasPi ;-)



#33 Gyro49

Gyro49

    Membre occasionnel

  • Membres
  • Pip
  • 246 messages
  • Gender:Male
  • Location:Angers, France
  • Interests:Les nouvelles technologies

Posté 21 octobre 2015 - 09:50

Pour python, en effet il est inclus dans la distribution d'origine.

 

Il apparait lors de l'update ou du lupgrade dans la liste des mise à jour

 

Bonne programmation



#34 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 21 octobre 2015 - 10:07

Merci pour ton aide !

 

cdlt,

bypbop






2 utilisateur(s) li(sen)t ce sujet

0 members, 2 guests, 0 anonymous users