【发布时间】:2015-09-05 06:50:10
【问题描述】:
这是我的树莓派代码,用于从 raspicam 获取静态照片并将其保存在目录中,
<?php
exec('raspistill -n -hf -o /var/www/img/image.jpg --timeout 1');
?>
我已使用 -R 授予在该文件夹中读/写的所有权和权限。所以我在 /var/www 中的 ls -al 是这样的
drwxr-xr-x 3 www-data www-data 4096 Jun 19 08:05 .
drwxr-xr-x 12 root root 4096 Jun 19 05:54 ..
-rwxrwxrwx 1 www-data www-data 74 Jun 19 08:30 getImg
drwxrwxrwx 2 www-data www-data 4096 Jun 19 09:21 img
-rw-r--r-- 1 root root 70 Jun 19 10:07 index.php
getImg 是我尝试将脚本作为shell_exec('/bin/bash ./getImg'); 之类的文件运行的脚本,但它也不起作用。
我已添加 /bash/bin 并尝试在不使用脚本文件的情况下运行脚本,但没有得到结果。
当我尝试在终端中运行 php 文件时,它会按正常方式创建图像。所以我认为这一定是权限问题,但我还应该如何处理权限?我已授予该目录的所有权限。
编辑
所以我找到了解决方法。因为我不知道问题的原因是什么,所以我不会将此标记为答案,但请投票让它出现在顶部。
我现在使用 cgi 脚本执行脚本。我在/usr/lib/cgi-bin/中创建了一个shell脚本
#!/bin/bash
echo "Content-type:text/html\n"
sudo raspistill -vf -n -o /var/www/img/image.jpg --timeout 1200 --metering matrix
echo "Status: 204"
我将其保存为捕获并使其可执行,但没有对权限进行任何操作。
sudo chmod +x capture
现在,当我打开链接http://192.168.1.85/cgi-bin/capture 时,浏览器仍会收到一条 500 内部服务器错误消息。但是,仍然会创建图像。
我现在需要修复 500 内部服务器错误。
【问题讨论】:
-
如果你在脚本中使用
raspistill的完整路径会有什么不同吗? -
我需要检查一下,我会尽快发布结果
-
@arco444 很好,在 php 命令行执行时停止脚本执行。
标签: php bash raspberry-pi exec shell-exec