这是我的计划:
#include "fcgi_stdio.h"
#include <stdlib.h>
int main(){
while (FCGI_Accept() >= 0){
FCGI_printf("Content-Type:text/html\r\n\r\n");
FCGI_printf("<h1>Test</h1>\n");
}
return 0;
}
这些是我添加到我正在使用的虚拟主机的apache配置中的选项:
SetHandler fastcgi-script
Options +ExecCGI
我在同一个apache配置文件中也有以下行:
LoadModule fastcgi_module modules/mod_fastcgi.so
我按照FastCGI script can't find libfcgi.so.0 in Apache 2.4.6 and mod_fastcgi的指示来编译我的程序。
如果我直接执行编译的程序,我会收到熟悉的&#34;分段错误&#34;在屏幕上。当我尝试通过http://127.0.0.1/a.out
上的服务器执行它时,我收到内部服务器错误以及error_log中的以下内容:
[Tue Nov 17 00:48:10 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" started (pid 9331)
[Tue Nov 17 00:48:10 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" (pid 9331) terminated due to uncaught signal '11' (Segmentation fault)
[Tue Nov 17 00:48:15 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" restarted (pid 9333)
[Tue Nov 17 00:48:15 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" (pid 9333) terminated due to uncaught signal '11' (Segmentation fault)
[Tue Nov 17 00:48:20 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" restarted (pid 9334)
[Tue Nov 17 00:48:20 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" (pid 9334) terminated due to uncaught signal '11' (Segmentation fault)
[Tue Nov 17 00:48:25 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" restarted (pid 9335)
[Tue Nov 17 00:48:25 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" (pid 9335) terminated due to uncaught signal '11' (Segmentation fault)
[Tue Nov 17 00:48:25 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:26 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:29 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:32 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:35 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:38 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:41 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:44 2015] [error] [client 127.0.0.1] FastCGI: comm with (dynamic) server "/usr/local/apache2/virt1/a.out" aborted: (first read) idle timeout (30 sec)
[Tue Nov 17 00:48:44 2015] [error] [client 127.0.0.1] FastCGI: incomplete headers (0 bytes) received from server "/usr/local/apache2/virt1/a.out"
[Tue Nov 17 00:48:44 2015] [warn] FastCGI: (dynamic) server "/usr/local/apache2/virt1/a.out" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
[Tue Nov 17 00:48:44 2015] [error] [client 127.0.0.1] (2)No such file or directory: FastCGI: stat() of "/usr/local/apache2/virt1/favicon.ico" failed
它基本上告诉我apache试图启动程序几次,但程序返回分段错误。
我期待的结果是网页浏览器中以粗体显示的单词Test
。
如何修复我的程序以使其与fast-cgi兼容,以便我可以通过Web浏览器执行它?
我不想诉诸缓慢的CGI界面,这就是我尝试使用以FCGI开头的功能的原因。