0

我正在尝试开始使用 fastcgi 开发,因此我下载了参考实现libfcgi并尝试让测试程序与lighttpd. 由于fcgi_stdio允许cgi向后兼容,我决定从它开始。但是我无法examples/tiny-fcgi.c使用lighttpd它,它产生了一个internal server errror 500相同的配置,允许完美地运行lighttpd示例程序(http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI,如下)。C/C++ FastCGI on lightty named socket但是,我完全不清楚为什么默认提供的示例不起作用。

问题:

  1. 参考实现中的示例/tiny-fcgi.c 示例有什么问题导致 lighttpd 返回错误 500?
  2. 哪种 fastcgi 实现更适合 c++ 开发(fcgi_stdio、fcgiapp、其他)?(fcgi 包中有一些流的东西,但是我找不到好的/任何文档)
4

3 回答 3

1

我已经测试了未修改的示例(Ubuntu/13.10/amd-64、Apache/2.4.6、libapache2-mod-fastcgi/2.4.7~0910052141-1.1、libfcgi-dev/2.4.0-8.1ubuntu4)并且运行正常:

manuelz@garibaldi:~$ curl habrich/tiny-fcgi
<title>FastCGI Hello! (C, fcgi_stdio library)</title>
<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>
Request number 2 running on host <i>habrich</i>

答案:

  1. 不知道你的配置很难说,但这里有一个在黑暗中的镜头:如果是undefinedgetenv将返回。NULLSERVER_NAME
  2. fcgiapp是基本实现:我会用那个来进行新的开发。fcgi_stdio是与 CGI 兼容的包装器:用于迁移遗留 CGI 项目。报价

    fcgi_stdio 被实现为 fcgiapp 之上的一个薄层

fcgiapp您可以在fcgiapp.h标头 中找到不错的文档。

于 2013-11-26T15:41:38.300 回答
1

我不知道您的问题是否与我的问题相同,但至少它具有相同的症状。

tiny-fcgi 示例有不同的版本。我首先尝试了这里给出的那个(示例 1)。这因内部服务器错误而失败。但是,此处给出的示例(基本相同)有效。微小但关键的区别是工作代码使用

getenv("SERVER_NAME")

代替

getenv("SERVER_HOSTNAME")
于 2014-02-06T22:52:18.663 回答
0

对我来说不完全一样,但是如果我避免使用getenv示例运行而没有错误,则必须找出getenv导致错误的原因

于 2014-09-12T18:56:46.593 回答