CGI脚本不由.sh脚本执行或调用

时间:2014-01-24 17:17:09

标签: linux apache bash shell cgi-bin

我已经开始了一个小项目,仅仅是为了在家里练习。 我正在使用带有debian linux的raspberry pi,在主板上安装了apache webserver 2,我不知道在webserver上但有些如何设法创建带有按钮的html页面和运行带按钮click的cgi脚本.Cgi脚本有html代码响应按钮点击。 显示hello world,然后命令调用shell脚本.sh。

shell脚本有以下命令RPI.a(我的项目在c lang中调用gpio pin在命令行中执行.cgi脚本时运行良好。

1)整体Html按钮点击 - > 2)调用cgi脚本(带有html的shell) - > 3)调用shell(.sh) - >它调用我的应用程序闪烁led。

从命令行手动执行.cgi时运行良好。但是当点击按钮时,它会跳过“$(sh script.sh)并执行下一行。

权限所有文件都已读取并执行所有文件。

.cgi脚本

#!/bin/bash
 echo "Content-type: text/html"
 echo "" 
echo "<html><head><title>Bash as CGI" 
echo "</title></head><body>" 
echo "<h1>Hello world</h1>"
 "$(sh Home_auto.sh)" 
echo "skipps the program" 
echo "</body></html>"

我的Home_auto.sh脚本

sudo RPI.a<<EOF
EOF

将我的申请目录添加到$ PATH var。

我发现当不是root用户时,它几次无法执行我的应用程序。显示的 找不到RPI.a命令 请帮我调用script.sh,它会在按钮点击时调用我的RPI.a应用程序。

2 个答案:

答案 0 :(得分:2)

通过运行a2enmod

启用cgi模块

如果您没有看到以下文件

ls /etc/apache2/mods-enabled/cgi*

/etc/apache2/mods-enabled/cgid.conf
/etc/apache2/mods-enabled/cgid.load

然后你需要启用cgi模块

sudo a2enmod cgi
sudo service apache2 restart

答案 1 :(得分:1)

检查www-data是否能够执行脚本(权限,路径):

sudo su www-data /your/script.sh