teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/01/10 05:26

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -16,4 +16,26 @@
16
16
 
17
17
  [passthru()](https://www.php.net/manual/ja/function.passthru.php)
18
18
 
19
- あたりのエラーを受け取れる関数を使って実行してみて、そのエラーを元にデバッグしてみてください。
19
+ あたりのエラーを受け取れる関数を使って実行してみて、そのエラーを元にデバッグしてみてください。
20
+
21
+ ---
22
+
23
+ > いえ以前にもshell_exec()でシェルスクリプト実行をやってて今回も応用しようと思っただけで、
24
+ > シェルスクリプト経由の必要性は無いです。
25
+
26
+ シェルスクリプトを経由させる必然性は無いという事なので、
27
+ [PHP - exec()のエラーハンドリングと標準エラー出力の関係をまとめる](https://qiita.com/smd8122/items/65b552f1d53bfb7fad9a)
28
+
29
+ の様な形で
30
+ ```PHP
31
+ exec('{フルパス}fswebcam -d /dev/video0 -r 640x480 -D 1 -S 5 -F 1 /var/www/html/syasinn/test1.jpeg 2>&1 ',$array,$return_var);
32
+
33
+ //標準出力と標準エラーを表示
34
+ var_dump($array);
35
+
36
+ //リターンコードを表示。0なら成功
37
+ var_dump($return_var);
38
+
39
+ ```
40
+ みたいな感じ(未テスト)で、標準エラーと標準出力、リターンコードを出しながらコマンドが成功するまでデバッグしてみると良いかと思います。
41
+ `fswebcam`がどういうエラーを返してくれるかは知りませんが、何らかのヒントは返してくれると思います。

1

修正

2020/01/10 05:26

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -1,10 +1,15 @@
1
1
  多分パスの問題なので
2
2
 
3
- `shell_exec("sh /var/www/html/test.sh");`
3
+ ~~`shell_exec("sh /var/www/html/test.sh");`
4
4
 
5
5
  `shell_exec("/bin/sh /var/www/html/test.sh");`
6
- で実行できそうな気がします。
6
+ で実行できそうな気がします。~~
7
7
 
8
+ `fswebcam -d /dev/video0 -r 640x480 -D 1 -S 5 -F 1 /var/www/html/syasinn/test1.jpeg`
9
+
10
+ `{フルパス}fswebcam -d /dev/video0 -r 640x480 -D 1 -S 5 -F 1 /var/www/html/syasinn/test1.jpeg`
11
+
12
+
8
13
  駄目なら、
9
14
  shell_execでは無く
10
15
  [exec()](https://www.php.net/manual/ja/function.exec.php)