Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php shell_exec和exec不';不能使用shell脚本_Php_Bash_Raspberry Pi_Exec_Shell Exec - Fatal编程技术网

php shell_exec和exec不';不能使用shell脚本

php shell_exec和exec不';不能使用shell脚本,php,bash,raspberry-pi,exec,shell-exec,Php,Bash,Raspberry Pi,Exec,Shell Exec,这是我为树莓pi编写的代码,它可以从树莓中获取一张静止的照片,并将其保存在一个目录中 <?php exec('raspistill -n -hf -o /var/www/img/image.jpg --timeout 1'); ?> getImg是我试图将脚本作为类似于shell_exec('/bin/bash./getImg')的文件运行的脚本这也不起作用 我添加了/bash/bin,并尝试在不使用脚本文件的情况下运行脚本,但没有得到结果 然而,当我尝试在终端中运行php文件

这是我为树莓pi编写的代码,它可以从树莓中获取一张静止的照片,并将其保存在一个目录中

<?php
  exec('raspistill -n -hf -o /var/www/img/image.jpg --timeout 1');
?>
getImg
是我试图将脚本作为类似于
shell_exec('/bin/bash./getImg')的文件运行的脚本这也不起作用

我添加了/bash/bin,并尝试在不使用脚本文件的情况下运行脚本,但没有得到结果

然而,当我尝试在终端中运行php文件时,它会像往常一样创建图像。所以我想这一定是权限问题,但我还应该如何处理权限呢?我已授予该目录的所有权利

编辑

所以我找到了一个解决办法。由于我不知道问题的原因是什么,我不会将此标记为答案,但请投票将其显示在顶部

现在,我使用cgi脚本执行脚本。我已经在
/usr/lib/cgi-bin/

#!/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\u var来捕获输出和返回值,您会得到什么

    string exec(string$command[,array&$output[,int&$return\u var]]

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

  • 如果在用户切换到www数据后通过终端运行它,它是否仍然有效


[我想添加这一点作为评论,但没有足够的分数]

  • 如果您使用可选参数$output和$return\u var来捕获输出和返回值,您会得到什么

    string exec(string$command[,array&$output[,int&$return\u var]]

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

  • 如果在用户切换到www数据后通过终端运行它,它是否仍然有效


如果在脚本中使用
raspistill
的完整路径,会有什么不同吗?我需要检查一下,我会发布结果soon@arco444好的,这会在php命令行执行时停止脚本执行。如果在脚本中使用
raspistill
的完整路径,会有什么区别吗?我需要检查一下,我会发布结果soon@arco444好的,这会在php命令行执行时停止脚本执行。如果在脚本中使用
raspistill
的完整路径,会有什么区别吗?我需要检查一下,我会发布结果soon@arco444好,这将在php命令行执行时停止脚本执行。我将检查此方法并返回给您。我将检查此方法并返回给您。我将检查此方法并返回给您。
sudo chmod +x capture