【问题标题】:CGI-script not executing or invoking by .sh script.sh 脚本不执行或调用 CGI 脚本
【发布时间】:2014-02-15 19:03:23
【问题描述】:

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

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

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

从命令行手动执行 .cgi 时运行良好。但是当从 html 中单击按钮时,它会跳过 "$(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 用户时,它无法执行我的应用程序几次。Display 的 未找到 RPI.a 命令 请帮助我调用 script.sh,它将在按钮单击时调用我的 RPI.a 应用程序。

【问题讨论】:

  • 向我们展示 cgi 脚本。
  • #!/bin/bash -x echo "Content-type: text/html" echo "" echo " Bash as CGI" echo "" echo "

    Hello world

    " "$(sh Home_auto.sh)" echo "跳过程序" echo ""
  • 以上是我用来执行我的 .sh 脚本的 cgi 脚本 i .sh 脚本有 RPI.a
  • 请将其添加到可以正确格式化为代码的问题中

标签: linux apache bash shell cgi-bin


【解决方案1】:

通过运行 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

【讨论】:

【解决方案2】:

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

sudo su www-data /your/script.sh

【讨论】:

  • 它确实执行了 .sh 脚本,进而调用了我使用交叉编译器编译的应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多