【问题标题】:Config cgi on apache2在 apache2 上配置 cgi
【发布时间】:2011-08-12 05:18:59
【问题描述】:

我需要我的 apache web 服务器来运行 c++ 编译的二进制文件。我已经完成了不同教程中告诉我的所有事情来设置我的 cgi-bin 目录,但没有任何帮助!

我已添加到 apache 配置(站点可用/默认):

ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    AddHandler cgi-script .cgi
</Directory>

我的 c++ 文件 (/var/www/cgi-bin/test.cgi) 只是简单地 couts hello world!,但是当我在浏览器上请求此文件时,我收到错误:内部服务器错误!

【问题讨论】:

  • 你能从控制台窗口发布你的 test.cgi 的输出吗?
  • 另外,Apache 错误日志是怎么说的?
  • 控制台的test.cgi输出:Hello World!
  • Apache 错误日志是:文件不存在:/var/www/cgi-bin/test.cgi
  • 尝试su-ing 到与 apache 相同的用户,并尝试在该环境中运行脚本。

标签: c++ apache2 cgi


【解决方案1】:

您的 test.cgi 不输出任何标题。它应该输出一组标题和正文,用空行分隔,如下所示:

Content-type: text/plain

Hello world!

还有更多可能是问题所在,但首先要在测试程序输出中添加“内容类型”标题和空行。

【讨论】:

  • 从“文件不存在”的错误信息来看,你还有其他问题——以 apache 用户身份运行程序是否有效?
【解决方案2】:

非常感谢!很抱歉我来不及回答。

通过更改权限解决了无法访问文件的问题。但是我创建的文件夹名称 /var/www/cgi-bin/ 出现错误,其中 cgi-bin 是文件夹 /usr/lib/cgi-bin/ 的别名。

当我将 test.cgi 文件放在那里时,我可以访问该文件,但仍然在 apache 中记录了 Header Content 的错误。这是因为标题应该是Content-type: text/html

【讨论】:

  • 感谢您的更新,但是最好将其写为问题的更新编辑而不是新答案。
猜你喜欢
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2021-06-17
  • 2016-05-27
  • 2018-05-13
相关资源
最近更新 更多