Apache CGI文件的奇怪行为

Apache CGI文件的奇怪行为,apache,bash,cgi,raspberry-pi,Apache,Bash,Cgi,Raspberry Pi,我已经完成了一个小项目。在其中,我使用了一些.cgi文件,在其中我在微控制器和Web服务器之间进行通信。问题如下: 如果我使用此代码,项目工作正常: #!/bin/bash ./moveRight echo "Status: 204 No Content" echo "Content-type: text/html" echo "" 但当我使用tjis代码时,什么都不会发生: #!/bin/bash mkdir /tmp/stream raspistill --nopreview -w

我已经完成了一个小项目。在其中,我使用了一些.cgi文件,在其中我在微控制器和Web服务器之间进行通信。问题如下:

如果我使用此代码,项目工作正常:

#!/bin/bash

./moveRight

echo "Status: 204 No Content"
echo "Content-type: text/html"
echo ""
但当我使用tjis代码时,什么都不会发生:

#!/bin/bash

mkdir /tmp/stream
raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th      0:0:0 &
chmod 777 /dev/ttyAMA0
LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -p 8080 -w /var/www" &


echo "Status: 204 No Content"
echo "Content-type: text/plain"
echo ""
我想要的是在调用.cgi时执行这些bash命令,您认为我的问题是什么?或者解决这个问题的方法

编辑:./moveRight是一个编译的c程序,用于移动电机。我有两个不同的。cgi。第一个可以正确地移动电机,但是第二个应该执行一些shell命令,但是当调用它时,什么也没有发生


谢谢

尝试将
exec 2>/tmp/my.log
作为脚本中的第一个命令。它将stderr重定向到一个文件,以便您以后可以查看它,然后在安装了重定向的情况下继续执行脚本


在命令之间的mkdir“1>&2等之前放置
echo”。通过这种方式,您将在日志中看到您在脚本中取得的进展。您可能只是在脚本中有一个不终止的命令。然后,您的web浏览器将挂起,直到出现超时。

尝试先打印HTTP头,然后执行命令:

#!/bin/bash

echo "Status: 204 No Content"
echo "Content-type: text/plain"
echo ""

mkdir /tmp/stream
raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th      0:0:0 &
chmod 777 /dev/ttyAMA0
LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -p 8080 -w /var/www" &

实际上,如果shell命令正在stdout上打印某些内容,您将有一个
状态500
,因为您的HTTP头不正确。

您不需要为mkdir、raspistill、chmod和mjpg_拖缆设置路径吗?您不需要导出LD_LIBRARY_PATH吗?@MarkSetchell默认情况下有一个路径设置,因为它由运行CGI脚本的web服务器继承。这可能不正确,我同意,但一般来说,你不必自己设定一个。像
mkdir
这样的东西最有可能出现在路径中。但是,特殊的可执行文件
mjpg_拖缆
可能不在路径中,因此应该扩展路径或使用可执行文件的完整路径。@MarkSetchell在这种情况下,您不必导出
LD_LIBRARY_PATH
,因为它是专门为设置后给出的一个命令设置的。语法
a=bc…
正在执行
c
,变量
a
设置为value
b
@Alfe我知道有一个默认路径,我只是指出它应该被适当地设置/扩展,以覆盖OP所依赖的所有可执行文件-正如你所说的那样。你确定这两个脚本都存在吗(工作和非工作)在所有重要方面都是相似的?对于web服务器用户来说都是可执行和可读的吗?都在允许web服务器用户使用的目录中吗?您的web服务器日志文件是否提供了帮助?