I never really understood: what is CGI?

CGI is a Common Gateway Interface. As the name says, it is a “common” gateway interface for everything. It is so trivial and naive from the name. I feel that I understood this and I felt this every time I encountered this word. But frankly, I didn’t. I’m still confused.

I am a PHP programmer. I did lot of web development.

user (client) request for page —> webserver(->embedded PHP
interpreter) —-> Server side(PHP) Script —> MySQL Server.

Now say my PHP Script can fetch results from MySQL Server && MATLAB Server && Some other server.

So, now PHP Script is the CGI? because its interface for the between webserver & All other servers? I don’t know. Sometimes they call CGI, a technology & othertimes they call CGI a program or someother server.

  • What exactly is CGI?

  • Whats the big deal with /cgi-bin/*.cgi? What’s up with this? I don’t know what is this cgi-bin directory on the server for. I don’t know why they have *.cgi extensions.

  • Why does Perl always comes in the way. CGI & Perl (language). I also don’t know what’s up with these two. Almost all the time I keep hearing these two in combination “CGI & Perl”. This book is another great example CGI Programming with Perl. Why not “CGI Programming with PHP/JSP/ASP”? I never saw such things.

  • CGI Programming in C, confuses me a lot. “in C“?? Seriously?? I don’t know what to say. I’m just confused. “in C“?? This changes everything. Program needs to be compiled and executed. This entirely changes my view of web programming. When do I compile? How does the program gets executed (because it will be a machine code, so it must execute as a independent process). How does it communicate with the web server? IPC? and interfacing with all the servers (in my example MATLAB & MySQL) using socket programming? I’m lost!!

  • They say that CGI is depreciated. Its no more in use. Is it so? What is its latest update?

Once, I ran into a situation where I
had to give HTTP PUT request access to
web server (Apache HTTPD). Its a long
back. So, as far as I remember this is
what I did:

  1. Edited the configuration file of Apache HTTPD to tell webserver to pass
    all HTTP PUT requests to some
    put.php ( I had to write this PHP

  2. Implement put.php to handle the request (save the file to the location

People said that I wrote a CGI Script.
Seriously, I didn’t have a clue what
they were talking about.

  • Did I really write CGI Script?

I hope you understood what my confusion is. (Because I myself don’t know where I’m confused). I request you guys to keep your answer as simple as possible. I really can’t understand any fancy technical terminology. At least not in this case.


I found this amazing tutorial “CGI Programming Is Simple!” – CGI Tutorial, which explains the concepts in simplest possible way. After reading this article you may want to read Getting Started with CGI Programming in C to supplement your understanding with actual code samples. I’ve also added these links to this tutorial to Wikipedia’s article : http://en.wikipedia.org/wiki/Common_Gateway_Interface

Source: Stackoverflow Php

Share on Facebook0Tweet about this on Twitter0Share on Google+0Pin on Pinterest0Share on LinkedIn0Share on Reddit0
It's only fair to share...

Add Comment

Required fields are marked *. Your email address will not be published.