2017-09-09 1 views
0

내 USB 카메라로 jpg를 캡처하기 위해 fswebcam을 호출하는 스크립트가 있습니다. 나는 "chmod를 + X webcam.sh"로 그것을 실행했습니다 :raspbian에서 PHP로 bash 스크립트 실행

파일 : /var/www/html/webcam.sh

#!/bin/bash 
DATE=$(date + "%Y-%m-%d_%H%M") 
fswebcam -r 640x480 /home/pi/webcam/$DATE.jpg 

이 그렇게, sudo는하지 않고 명령 줄에서 잘 작동 나는 작은 PHP 페이지를 만들었어요 :

파일 : /var/www/html/index.php

<?php 
$output = shell_exec('sh /var/www/html/webcam.sh'); 
echo "<pre>$output</pre>"; 
?> 

내가 웹 페이지에 갈 때, 난 그냥 빈 페이지를 얻고 더 JPG이 만들어지지 않습니다 내 웹캠 폴더에 있습니다. 그래서 Apache2 error log

I가, PHP에서 내 전화를 수정하려고했습니다 :

나는 다음과 같은 오류 있어요 나는 또한 파일의 sudoers에 다음을 추가 한

<?php 
$output = shell_exec('/usr/bin/sudo /bin/bash /var/www/html/webcam.sh'); 
echo "<pre>$output</pre>"; 
?> 

www-data ALL=NOPASSWD: /path/to/script 

하지만 여전히 오류가 발생합니다. apache2 log error

나는이 스레드에서 모든 것을 시도했다 : How to run .sh script with php?

당신은 생각을 가지고 있니? 사전에

감사합니다,

빅터

답변

0

첫째 : 당신이 그것을 위해 매우 좋은 이유가없는 경우

  • 은 sudo를 사용하지 마십시오.
  • sh은 반드시 bash을 호출하지 않습니다.
  • sudo은 암호가 필요하지만 오류를 제공하지 않았습니다.

    웹 서버에서 보통으로 실행 :

    <?php 
        exec('/var/www/html/webcam.sh', $output, $exitCode); 
    
        echo 'Exit code: '.$exitCode.' <hr />'; 
        echo implode('<br />', $output); 
    

    권한과 관련이있을 수있는 문제의 또 다른 출처 : 내가 대신 shell_execexec과 노력 제안

는 (둘 사이에 차이가 있습니다) 다른 사용자.

웹 서버가 실제로 출력 디렉토리에 쓸 수 있는지 확인하십시오.

+0

여전히 작동하지 않는다면 스크립트의 출력을 게시하십시오. – d3L

+0

위 코드를 시도했지만 서버에서 오류가 발생했습니다. HTTP 오류 500입니다. 오류 로그에 다음과 같이 표시됩니다. "PHP 구문 분석 오류 : 구문 오류,/var/www의 예기치 않은 'echo'(T_ECHO) /html/index.php on line 3 "을 참조하십시오. 그 에코 라인에 주석을 달면 오류 로그에 "빈 장치를 열었습니다 :/dev/video0 open : Permission denied"라고 표시됩니다. –

+1

지금 작동 중입니다. 허가에 대해 나에게 한 마지막 말을 확인해 봤어. 그래서 나는 서버에 "adduser www-data video"로 카메라에 접근 할 수있는 권한을 주었고 "chown -R www-data/home/pi/webcam"이라는 폴더를 쓸 권한을 주었다. –