遥想当年,我也是写过CGI hello world的

2024-03-23 06:10
文章标签 cgi hello world 当年 遥想

本文主要是介绍遥想当年,我也是写过CGI hello world的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不知何年何月某个月黑风高的晚上,我突然想入手一下CGI,于是乎...,,一天快过去了,我确实只是写了个hello world

从此以后就没有以后了。

 

yum install httpd

httpd /? 看帮助

重要目录

/etc/httpd/conf..,配置

/var/log/http.. 日志

/var/www/cgi-bin/ cgi目录

官方 值得看看

https://httpd.apache.org/docs/2.4/howto/cgi.html

 

# 不能-k 参数 ,如重启httpd -k restart

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

解决办法非常简单:

#nano /usr/local/apache2/conf/httpd.conf

找到#ServerName www.example.com:80   把#去掉,再重启apache即可没事了。

 

# 测试 ,这是官方的例子

first.pl

#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World.\n";

 

# 加权限

[root@localhost cgi-bin]chmod a+x first.pl

[root@localhost cgi-bin]# ./first.pl

Content-type: text/html

 

Hello , World ,cgi perl

[root@localhost cgi-bin]#

 

# curl 测试

[root@localhost cgi-bin]# curl http://localhost/cgi-bin/first.pl

Hello , World ,cgi perl

[root@localhost cgi-bin]#

 

# 想当然来了一段,但为什么用c就不行了呢?

#include <stdio.h>

int main(){

printf("Content-type:text/html\n\n");

printf("hello\n");

return 0;

}

 

[root@localhost cgi-bin]# curl http://localhost/cgi-bin/hello.cgi

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>500 Internal Server Error</title>

 

[root@localhost cgi-bin]# cat /var/log/httpd/error_log

[Mon Jun 26 21:50:41.122497 2017] [cgi:error] [pid 2836] [client ::1:60650] Premature end of script headers: hello.cgi

[Mon Jun 26 21:54:18.561903 2017] [cgi:error] [pid 2832] [client ::1:60652] Premature end of script headers: hello.cgi

 

# 所以关键时候看官方文档

网上查了那么多例子都是perl的,其中虽然有很多c或c++写的,但是都报错Premature end of script,

官方对于错误描述也写的很清楚,再次提醒,把官方的文档看完https://httpd.apache.org/docs/2.4/howto/cgi.html

想来想去,还是觉得输出有问题,关于CGI,其实有一套规范的,不可能就这么简单的printf content-type..这样就可以了

 

 

[root@localhost cgi-bin]# cat hello.c

#include <stdio.h>

int main(){

printf("%c%c",13,10);

printf("%s%c%c","<meta Content-Type:text/html;charset=UTF-8 />",13,10);

printf("<TITLE>title</TITLE> \n");

printf("<HTML>cgi impl form c or c++</HTML> \n");

return 0;

}

[root@localhost cgi-bin]#

 

[root@localhost cgi-bin]# curl http://localhost/cgi-bin/hello.cgi //看结果,大功告成

<meta Content-Type:text/html;charset=UTF-8 />

<TITLE>title</TITLE>

<HTML>cgi impl form c or c++

[root@localhost cgi-bin]#

 

# 图片

 

 

 

# 搞完linux,再搞window啊,尽然输出是的文本?

 

# 不妥协, 继续折腾

配置

<Directory "F:/Apache2.2/cgi-bin">

Options +ExecCGI

AddHandler cgi-script .cgi .exe

AllowOverride None

Order allow,deny

Allow from all

</Directory>

 

 

 

还不错

 

# cgic

用纯c写太麻烦,可以用CGIC框架啊

linux centos7 中测试 ,关防火墙

 

官方有现成的例子,先跑起来,

下载 wget Obtain cgic: gzipped tar file

解压 [root@localhost cgic207]# tar -xvf cgic207.tar.gz

编译 [root@localhost cgic207]# make cgictest.cgi

效果不错吧,感觉不错啊

[root@localhost cgic207]# pwd

/var/www/cgi-bin/cgic207

 

# 结论

对于大部分的博客,误人子弟,浪费了多少人的时间啊

就这么简单的几行代码,搞了快一天,结果一篇好的博客就搞定了,那些所谓的实验,浪费我太多时间,我还以为是window不行,转到linux总算调通了,并不是window不行

也有开源的C包写CGI哦

https://boutell.com/cgic/#obtain //此网站还有很多其它开源的

--------------------------我还是那个漂亮的分割线------------------------

我还是曾经那个少年

这篇关于遥想当年,我也是写过CGI hello world的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837388

相关文章

【Spring boot】编写代码及测试用例入门之 Hello Spring boot _踩坑记

先贴下目录: 这是我从 start.spring.io 里下载的依赖Web的模板 // DemoApplication.javapackage com.abloume.springboot.blog.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autocon

【JFinal】IDEA+maven上手JFinal之Hello World!

一、New Project 1、在 IDEA 环境下新建 Project 项目 2、选择创建 Maven 项目,并且不使用模板 3、输入 Maven 的 GroupId 和 ArtifactId 4、输入项目名称 二、将当前 Project 改为 POM 工程 将项目的 jfinal-web-demo 作为项目的 parent 工程,用于定义 maven 依赖包的版本信息、

CVPR 2024最新论文分享┆YOLO-World:一种实时开放词汇目标检测方法

论文分享简介 本推文主要介绍了CVPR 2024上的一篇论文《YOLO-World: Real-Time Open-Vocabulary Object Detection》,论文的第一作者为Tianheng Cheng和Lin Song,该论文提出了一种开放词汇目标检测的新方法,名为YOLO-World。论文通过引入视觉-语言建模和大规模预训练解决了传统YOLO检测器在固定词汇检测中的局限性。论

hello,大家好。

由于最近工作变动,目前是从河北来到了广东。 顾不上写博客了,请大家谅解。 后续会慢慢的恢复正常的节奏,很感谢大家的关注。

Adobe After Effects的插件--------CC Particle World

CC Particle World是一个粒子效果器,用于在三维空间中生成和模拟各种粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。它会自动随时间变化发射粒子。 本文部分参照 https://www.163.com/dy/article/IEJVDN760536FE6V.html 使用条件 使用该插件的图层需是2D图层。 我们新建一个纯色图层(也可以是其他类型图层),作为【效果控件载体图层】

java-在idea中antrl的hello world

java-在idea中antrl的hello world 1. 在idea中安装ANTLR V4的插件2. 下载ANTLR的jar包3. idea中创建普通的java项目4. 创建一个Hello.g4的文件5. 使用idea生产接口文件6. java创建一个类和main方法7. 调试输出8. 参考链接 1. 在idea中安装ANTLR V4的插件 路径如下,安装完成后重启ide

World of Warcraft [CLASSIC][80][Shushia][Molten Core][BOSS-5 Baron Geddon]

80级术士单杀[熔火之心]40人团队副本 [5号BOSS 迦顿男爵] BOSS技能①[点燃法力],每3秒燃烧400点法力值,实际上还附带400点伤害,持续5分钟 BOSS技能②[人体炸弹] :迦顿男爵会随机给一个人施放DEBUFF,被DEBUFF影响的人需要在最短时间内跑到远离人群的角落,等待炸弹爆炸。这个技能会造成3000+的伤害,并且会对周围一定范围内的玩家造成等量伤害,感觉我

java-antrl手敲命令的hello world

java-antrl手敲命令的hello world 环境步骤1. 下载ANTLR的jar包2. 新建一个g4文件3. 生成语法对应的java文件4. 编译语法对应的java文件5. 测试语法5.1 打印测试信息5.2 查看语法分析树 6. 注意事项6.1 每一个antlr4版本的jar包都对应java的相应版本,要对应。6.2 [@1,6:10='parrt',<ID>,1:6]解析6.3

Cgi、FastCgi与PHP-cgi、PHP-fpm详解

CGI:是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者(是一种协议 : 通用网关协议)。 web server:(比如说nginx)只是内容的分发者。 比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个