繁体   English   中英

php shell_exec和exec不适用于shell脚本

[英]php shell_exec and exec doesn't work with shell script

所以这是我的代码,用于树莓派从raspicam拍摄静止图像并将其保存在目录中,

<?php
  exec('raspistill -n -hf -o /var/www/img/image.jpg --timeout 1');
?>

我已使用-R在该forlder中赋予了所有权和读取/写入的权限。 所以我在/ 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');类的文件运行的脚本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个内部服务器错误。

[我将其添加为评论,但没有足够的要点]

  • 如果使用可选参数$ output和$ return_var捕获输出并返回值,您会得到什么?

    字符串exec(字符串$ command [,数组&$ output [,int&$ return_var]])

  • 您的命令是否依赖于以用户身份而非环境数据运行时可能可用的环境变量? (您可以使用env命令进行检查)

  • 如果将用户切换到www-data后通过终端运行它,它仍然可以工作吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM