首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在raspbian上从PHP执行bash脚本

在raspbian上从PHP执行bash脚本
EN

Stack Overflow用户
提问于 2017-09-09 21:51:58
回答 1查看 565关注 0票数 0

我有一个脚本,它调用fsweb摄像头来用我的USB摄像头捕捉一个jpg。我用"chmod +x webcam.sh“使其可执行:

文件: /var/www/html/webcam.sh

代码语言:javascript
复制
#!/bin/bash
DATE=$(date + "%Y-%m-%d_%H%M")
fswebcam -r 640x480 /home/pi/webcam/$DATE.jpg

这在没有sudo的命令行中运行得很好,所以我制作了一个小PHP页面:

文件: /var/www/html/index.php

代码语言:javascript
复制
<?php
 $output = shell_exec('sh /var/www/html/webcam.sh');
 echo "<pre>$output</pre>";
?>

当我转到网页时,我只会得到一个空白页面,在我的摄像头文件夹中没有创建jpg。

我得到了以下错误:Apache2错误日志

因此,我尝试修改PHP中的调用,以便:

代码语言:javascript
复制
<?php
$output = shell_exec('/usr/bin/sudo /bin/bash /var/www/html/webcam.sh');
echo "<pre>$output</pre>";
?>

我还将以下内容添加到sudoers文件中

代码语言:javascript
复制
www-data ALL=NOPASSWD: /path/to/script

但我还是会发现错误:apache2日志错误

我已经尝试过这个线程中的所有东西:如何使用php运行.sh脚本?

你知不知道?

提前谢谢你,

维克多

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-09 22:54:13

首先:

  • 不使用sudo,如果您没有,非常,这是很好的理由。
  • sh不一定调用bash
  • sudo需要一个密码,但是您没有提供任何因此而产生的错误。

我建议尝试使用exec而不是shell_exec (两者之间有区别):

代码语言:javascript
复制
<?php
    exec('/var/www/html/webcam.sh', $output, $exitCode);

    echo 'Exit code: '.$exitCode.' <hr />';
    echo implode('<br />', $output);

造成问题的另一个原因可能是权限相关:

user服务器通常以不同的用户运行。

确保webserver实际上可以写入输出目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46135434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档