php és az exec()

Sziasztok!

Egy webkamera aktuális képét szeretném kirakni egy weboldalra.
Az index.php meghívásakor exec() fügvénnyel hívok egy bash scriptet, ami megcsiálja a képet, majd ezt a képet rakom ki a júzernek.

###A képkészítő fájl (picture.sh)
#!/bin/bash
streamer /dev/video0 -b 16 -o /var/www/redman/webcam/webcam.jpeg

###Az index.php
<?php
exec('picture.sh');
echo 'kacsacsőr img src="webcam.jpeg?',time(),'kacsacsőr"';

###idő hozzáfűzése a böngésző cache elkerülésére
?>

Egy könyvtárban vannak.
A gondom az, hogyha a php-ból hívom meg a scriptet, akkor nem hozza létre a fájlt a könyvtárban.
Ha kézzel futtatom nincs gond.
A könyvtárra worldwritable jog van(pillanatnyilag:)), evvel nem lehet gond.

a system() függvénnyel is próbálkoztam, ugyanaz. Úgy is próbáltam, hogy a scriptben a parancs elé echo-val kiirattam debugszöveget. Az megjelent, a képet nem hozta létre.
Nem tudom mi lehet. Valakinek esetleg valami tipp?

Üdv: redman

Hozzászólások

php pistike 4ever!
--
1 leszel vagy 0 élő vagy hulla!

gondolom csekkolni kene /dev/video0 persmissionjet is.

php PATH-jaban bennevan a streamer?

tipp:
exec('./picture.sh');

vagy:
a picture.sh-t teljes elérési úttal megadni, illetve a
a scriptben is érdemes a streamer-t teljes path-al megadni.

További tipp:
open_basedir probléma.

Php error log van?

esetleg popen-el futtasd es nezd meg mit ir az STDOUT-ra.

Megvan!

Mégis a /dev/video0 jogaival volt a gond.
Nem gondoltam volna, hogy írás jog is kell hozzá, nem csak olvasás.

Köszönöm az építő jellegű hozzászólásokat!

Üdv: redman

http://www.redman.hu

javaslom su - www-data vagy ami alatt fut a php és onnan futtassad le. kiderül minden mi a gondja. javaslom még, hogy teljes eléréssel hívd meg az sh-t.

Hú, öregem, ha megfogadsz egy tanácsot, ezt így sürgősen felejtsd el... Nem is tudom hirtelen felsorolni, mennyi probléma lehet vele (gondolj bele, nemcsak egy user nézi egy időben!!!). Szerintem inkább csináld azt, hogy a háttérben hívogatod a webcam.jpeg generáló scriptet adott időközönként, és a php-ból meg csak hivatkozol rá. Így a fork és a streamelés egyenletes terhelést ad, nem pedig rapszódikusat, és garantáltan egyszerre egy process fogja írni a webcam.jpeg-et.

Szerk: és nem utolsó sorban így nem kell plusz jogokat adnod a www-data usernek.