segura que programacion consiste con cinema arquitectura archivos cgi

que - ¿Qué es la interfaz de puerta de enlace común(CGI)?



que es perl cgi (12)

¿Qué es exactamente CGI?

Un medio para que un servidor web obtenga sus datos de un programa (en lugar de, por ejemplo, un archivo).

¿Cuál es el problema con /cgi-bin/*.cgi?

No es gran cosa. Es sólo una convención.

No sé para qué sirve este directorio cgi-bin en el servidor. No sé por qué tienen extensiones * .cgi.

El servidor debe saber qué hacer con el archivo (es decir, tratarlo como un programa para ejecutar en lugar de algo para simplemente servir). Tener una extensión .html le dice que use un tipo de contenido de texto / html. Tener una extensión .cgi le dice que lo ejecute como un programa.

Mantener los archivos ejecutables en un directorio separado brinda una protección adicional contra la ejecución de archivos incorrectos y / o la entrega de programas CGI como datos sin procesar en caso de que el servidor se confunda mal.

¿Por qué Perl siempre se interpone en el camino?

No lo hace Perl era grande y popular al mismo tiempo que CGI.

No he usado Perl CGI durante años. Estuve usando mod_perl durante mucho tiempo, y hoy en día me inclino por PSGI / Plack con FastCGI.

Este libro es otro gran ejemplo de Programación CGI con Perl. Por qué no "Programación CGI con PHP / JSP / ASP".

CGI no es muy eficiente. Los mejores métodos para hablar con los programas de los servidores web aparecieron casi al mismo tiempo que PHP. JSP y ASP son diferentes métodos para hablar con programas.

Programación CGI en C esto me confunde mucho. ¿¿Cía?? ¿¿Seriamente??

Es un lenguaje de programación, ¿por qué no?

¿Cuándo compilo?

  1. Escribir codigo
  2. Compilar
  3. URL de acceso
  4. El servidor web ejecuta el programa

Cómo se ejecuta el programa (porque será un código de máquina, por lo que debe ejecutarse como un proceso independiente).

No tiene que ejecutarse como un proceso independiente (puede escribir módulos de Apache en C), pero todo el concepto de CGI es que inicia un proceso externo.

¿Cómo se comunica con el servidor web? IPC?

STDIN / STDOUT y variables de entorno, tal como se definen en la especificación CGI.

e interactuar con todos los servidores (en mi ejemplo, MATLAB y MySQL) usando la programación de socket?

Usando cualquier método que te guste y con el que estés soportado.

Dicen que el CGI está depreciado. Ya no está en uso. ¿Es tan?

CGI es ineficiente, lento y simple. Raramente se usa, cuando se usa, es porque es simple. Si el rendimiento no es un gran problema, entonces la simplicidad vale mucho.

¿Cuál es su última actualización?

1.1

CGI es una interfaz de puerta de enlace común. Como su nombre lo indica, es una interfaz de puerta de enlace "común" para todo. Es tan trivial e ingenuo por el nombre. Siento que entendí esto y sentí esto cada vez que encontré esta palabra. Pero, francamente, no lo hice. Todavía estoy confundido.

Soy programador PHP con experiencia en desarrollo web.

solicitud del usuario (cliente) para la página ---> servidor web (-> intérprete PHP incorporado) ----> Script del lado del servidor (PHP) ---> MySQL Server.

Ahora diga que mi script PHP puede obtener resultados del servidor MySQL y el servidor MATLAB y algún otro servidor.

Entonces, ¿ahora PHP Script es el CGI? Debido a que su interfaz para el servidor web y todos los demás servidores? No lo sé. A veces llaman a CGI, una tecnología y otras veces llaman a CGI un programa o algún otro servidor.

  • ¿Qué es exactamente CGI?

  • ¿Cuál es el problema con /cgi-bin/*.cgi ? ¿Qué pasa con esto? No sé para qué sirve este directorio cgi-bin en el servidor. No sé por qué tienen extensiones * .cgi.

  • ¿Por qué Perl siempre se interpone en el camino? CGI y Perl (idioma). Tampoco sé qué pasa con estos dos. Casi todo el tiempo sigo escuchando estos dos en combinación "CGI & Perl". Este libro es otro gran ejemplo de Programación CGI con Perl . ¿Por qué no "Programación CGI con PHP / JSP / ASP"? Nunca vi esas cosas.

  • Programación CGI en C , me confunde mucho. " en C "? ¿¿Seriamente?? No se que decir Estoy confundido. " en C "? Esto lo cambia todo. El programa necesita ser compilado y ejecutado. Esto cambia por completo mi visión de la programación web. ¿Cuándo compilo? Cómo se ejecuta el programa (porque será un código de máquina, por lo que debe ejecutarse como un proceso independiente). ¿Cómo se comunica con el servidor web? IPC? e interactuar con todos los servidores (en mi ejemplo, MATLAB y MySQL) usando la programación de socket? ¡¡Estoy perdido!!

  • La gente dice que CGI está en desuso y ya no está en uso. ¿Es eso así? ¿Cuál es la última actualización?

Una vez, me encontré con una situación en la que tenía que dar acceso a la solicitud HTTP PUT al servidor web (Apache HTTPD). Es una espalda larga. Entonces, por lo que recuerdo, esto es lo que hice:

  1. Edité el archivo de configuración de Apache HTTPD para decirle al servidor web que pase todas las solicitudes HTTP PUT a algunos put.php (tuve que escribir este script PHP)

  2. Implemente put.php para manejar la solicitud (guarde el archivo en la ubicación mencionada)

La gente dijo que escribí un guión CGI. En serio, no tenía ni idea de lo que estaban hablando.

  • ¿Realmente escribí CGI Script?

Espero que hayas entendido cuál es mi confusión. (Porque yo mismo no sé dónde estoy confundido). Les pido que mantengan su respuesta lo más simple posible. Realmente no puedo entender ninguna terminología técnica de lujo. Al menos no en este caso.

EDITAR:

Encontré este increíble tutorial "¡La programación CGI es simple!" - Tutorial CGI , que explica los conceptos de la manera más simple posible. Después de leer este artículo, es posible que desee leer Introducción a la Programación CGI en C para complementar su comprensión con ejemplos de códigos reales. También he agregado estos enlaces a este tutorial al artículo de Wikipedia: http://en.wikipedia.org/wiki/Common_Gateway_Interface


CGI es un mecanismo por el cual el servidor web llama a un programa externo para manejar una solicitud, con variables de entorno y entrada estándar que se utilizan para enviar los datos de la solicitud al programa. El idioma exacto en el que está escrito el programa externo no importa, aunque es más fácil escribir programas CGI en algunos idiomas que en otros.

Dado que los scripts CGI necesitan permisos de ejecución, httpd de forma predeterminada solo permite que los programas CGI en el directorio cgi-bin se ejecuten con fines de seguridad (posiblemente ahora mal orientados).

La mayoría de los scripts PHP se ejecutan en el proceso del servidor web a través de mod_php . Esto no es CGI.

El CGI es lento ya que el programa (y el intérprete relacionado) debe iniciarse por solicitud. Las alternativas modernas son la ejecución integrada, utilizada por mod_php, y los procesos de larga ejecución, utilizados por FastCGI. Un lenguaje dado puede tener su propia forma de implementar esos mecanismos, así que asegúrese de preguntar antes de recurrir a CGI.


CGI es una especificación de interfaz entre un servidor web (servidor HTTP) y un programa ejecutable de algún tipo que debe manejar una solicitud en particular.

Describe cómo ciertas propiedades de esa solicitud deben comunicarse al entorno de ese programa y cómo el programa debe comunicar la respuesta al servidor y cómo el servidor debe "completar" la respuesta para formar una respuesta válida a la solicitud HTTP original.

Por un tiempo, CGI fue un borrador de Internet del IETF y, como tal, tenía una fecha de vencimiento. Caducó sin actualización, por lo que no había un ''estándar'' CGI. Ahora es un RFC informativo, pero como tal documenta la práctica común y no es un estándar en sí mismo. rfc3875.txt , rfc3875.html

Los programas que implementan una interfaz CGI se pueden escribir en cualquier idioma ejecutable en la máquina de destino. Deben poder acceder a las variables de entorno y, generalmente , a la entrada estándar, y generan su salida en la salida estándar .

Los lenguajes compilados, como C, se usaban comúnmente, al igual que los lenguajes de script, como perl, que a menudo usaban bibliotecas para facilitar el acceso al entorno CGI.

Una de las grandes desventajas de CGI es que se genera un nuevo programa para cada solicitud, por lo que mantener el estado entre solicitudes podría ser un problema de rendimiento importante. El estado puede ser manejado en cookies o codificado en una URL, pero si llega a ser grande, debe almacenarse en otro lugar y con clave de información de URL codificada o una cookie. Cada invocación CGI tendría que volver a cargar el estado almacenado desde una tienda en algún lugar.

Por esta razón, y para una interfaz muy simple para solicitudes y sesiones, los entornos mejor integrados entre servidores web y aplicaciones son mucho más populares. Los entornos como una implementación moderna de php con apache integran el idioma de destino mucho mejor con el servidor web y brindan acceso a los objetos de solicitud y sesión que son necesarios para atender de manera eficiente las solicitudes http. Ofrecen una forma mucho más fácil y más rica de escribir ''programas'' para manejar las solicitudes HTTP.

Si escribiste un script CGI depende de la interpretación. Ciertamente hizo el trabajo de uno, pero es mucho más habitual ejecutar php como un módulo en el que la interfaz entre el script y el servidor no es estrictamente una interfaz CGI.


CGI es una interfaz que le dice al servidor web cómo pasar datos hacia y desde una aplicación. Más específicamente, describe cómo se pasa la información de la solicitud en las variables de entorno (como el tipo de solicitud, la dirección IP remota), cómo se pasa el cuerpo de la solicitud a través de la entrada estándar y cómo se transmite la respuesta a través de la salida estándar. Puede consultar la especificación CGI para más detalles.

Para usar tu imagen:

user (client) request for page ---> webserver ---[CGI]----> Server side Program ---> MySQL Server.

La mayoría, si no todos, los servidores web pueden configurarse para ejecutar un programa como un ''CGI''. Esto significa que el servidor web, al recibir una solicitud, enviará los datos a un programa específico, configurando algunas variables de entorno y ordenando los parámetros a través de la entrada estándar y la salida estándar para que el programa pueda saber dónde y qué buscar.

El principal beneficio es que puede ejecutar CUALQUIER código ejecutable desde la web, dado que tanto el servidor web como el programa saben cómo funciona CGI. Es por eso que podría escribir programas web en C o Bash con un servidor web normal habilitado para CGI. Eso, y que la mayoría de los entornos de programación pueden usar fácilmente entradas estándar, salidas estándar y variables de entorno.

En su caso, lo más probable es que haya utilizado otro, específico para PHP, medios de comunicación entre sus scripts y el servidor web, esto, como bien menciona en su pregunta, es un intérprete integrado llamado mod_php.

Entonces, respondiendo a tus preguntas:

¿Qué es exactamente CGI?

Véase más arriba.

¿Cuál es el problema con /cgi-bin/*.cgi? ¿Qué pasa con esto? No sé para qué sirve este directorio cgi-bin en el servidor. No sé por qué tienen extensiones * .cgi.

Ese es el lugar tradicional para los programas cgi, muchos servidores web vienen con este directorio preconfigurado para ejecutar todos los binarios allí como programas CGI. La extensión .cgi denota un ejecutable que se espera que funcione a través del CGI.

¿Por qué Perl siempre se interpone en el camino? CGI y Perl (idioma). Tampoco sé qué pasa con estos dos. Casi todo el tiempo sigo escuchando estos dos en combinación "CGI & Perl". Este libro es otro gran ejemplo de Programación CGI con Perl. Por qué no "Programación CGI con PHP / JSP / ASP". Nunca vi esas cosas.

Debido a que Perl es antiguo (más antiguo que PHP, JSP y ASP que surgió cuando CGI ya era antiguo, Perl existía cuando CGI era nuevo) y se hizo famoso por ser un lenguaje muy bueno para servir páginas web dinámicas a través de CGI. Hoy en día existen otras alternativas para ejecutar Perl en un servidor web, principalmente mod_perl .

Programación CGI en C esto me confunde mucho. ¿¿Cía?? ¿¿Seriamente?? No se que decir Estoy "confundido" en C "? Esto cambia todo. El programa debe compilarse y ejecutarse. Esto cambia completamente mi visión de la programación web. ¿Cuándo compilo? ¿Cómo se ejecuta el programa (porque será un código de máquina, por lo que debe ejecutarse como un proceso independiente). ¿Cómo se comunica con el servidor web? ¿IPC ?, y se conecta con todos los servidores (en mi ejemplo, MATLAB y MySQL) usando la programación de socket? ¡Estoy perdido!

Se compila el ejecutable una vez, el servidor web ejecuta el programa y pasa los datos de la solicitud al programa y genera la respuesta recibida. CGI especifica que se lanzará una instancia de programa por cada solicitud. Es por esto que el CGI es ineficiente y un poco obsoleto en la actualidad.

Dicen que el CGI está en desuso. Ya no está en uso. ¿Es tan? ¿Cuál es su última actualización?

CGI todavía se usa cuando el rendimiento no es primordial y se requiere un medio simple para ejecutar el código. Es ineficiente por las razones expuestas anteriormente y existen medios más modernos para ejecutar cualquier programa en un entorno web. Actualmente el más famoso es FastCGI .


Echa un vistazo a http://en.wikipedia.org/wiki/Common_Gateway_Interface en Wikipedia. CGI es un protocolo entre el servidor web y un programa externo o un script que maneja la entrada y genera la salida que se envía al navegador.

CGI es simplemente una forma para que el servidor web y un programa se comuniquen, nada más y nada menos. Aquí el servidor administra la conexión de red y el protocolo HTTP y el programa maneja la entrada y genera la salida que se envía al navegador. El script CGI puede ser básicamente cualquier programa que pueda ser ejecutado por el servidor web y sigue el protocolo CGI. Por lo tanto, un programa CGI se puede implementar, por ejemplo, en C. Sin embargo, eso es extremadamente raro, ya que C no es muy adecuado para la tarea.

/cgi-bin/*.cgi es simplemente un camino donde las personas comúnmente ponen su script CGI. El servidor web normalmente se configura de manera predeterminada para obtener scripts CGI de esa ruta.

un script CGI puede implementarse también en PHP, pero todos los programas PHP no son scripts CGI. Si el servidor web tiene un intérprete PHP incorporado (por ejemplo, mod_php en Apache), la fase CGI se omite mediante un protocolo directo más eficiente entre el servidor web y el intérprete.

Si ha implementado un script CGI o no, depende de cómo el servidor web está ejecutando su script.


El CGI se especifica en RFC 3875 , aunque es una codificación "oficial" posterior del documento NCSA original. Básicamente, CGI define un protocolo para pasar datos sobre una solicitud HTTP de un servidor web a un programa para procesar: cualquier programa, en cualquier idioma. En el momento en que se escribió la especificación (1993), la mayoría de los servidores web contenían solo páginas estáticas, las "aplicaciones web" eran una cosa rara y nueva, por lo que parecía natural mantenerlas separadas del contenido estático "normal", como en un cgi-bin directorio cgi-bin , aparte del contenido estático, hace que terminen en .cgi .

En este momento, aquí tampoco había "lenguajes de programación web" dedicados como PHP, y C era el lenguaje de programación portátil dominante, por lo que muchas personas escribieron sus scripts CGI en C. Pero Perl rápidamente resultó ser una mejor opción para este tipo de software. cosa, y CGI se convirtió casi en sinónimo de Perl por un tiempo. Luego vinieron los Servlets de Java, PHP y muchos otros y se hicieron con gran parte de la cuota de mercado de Perl.


Esencialmente, CGI pasa la solicitud a cualquier intérprete que esté configurado con el servidor web. Esto podría ser Perl, Python, PHP, Ruby, C casi cualquier cosa. Perl fue el más común en la actualidad, por eso es que a menudo se lo ve en referencia a CGI.

CGI no está muerto. De hecho, la mayoría de las grandes empresas de hosting ejecutan PHP como CGI en lugar de mod_php porque ofrece configuración de nivel de usuario y algunas otras cosas mientras es más lento que mod_php. Ruby y Python también suelen ejecutarse como CGI. La diferencia clave aquí es que un módulo de servidor se ejecuta como parte del software del servidor real, donde, como con CGI, está totalmente fuera del servidor. El servidor solo usa el módulo CGI para determinar cómo pasar y recibir datos al intérprete externo.


La idea detrás de CGI es que un programa / script (ya sea Perl o incluso C) recibe entrada a través de STDIN (los datos de solicitud) y envía datos a través de STDOUT (eco, sentencias printf). La razón por la que la mayoría de los scripts php no califican es porque se ejecutan bajo el módulo PHP Apache.


Tal vez quiera saber qué no es CGI, y la respuesta es un MÓDULO para su servidor web (si supongo que está ejecutando Apache). Y ESA LA GRAN DIFERENCIA, porque CGI necesita un programa externo, un hilo, lo que sea para crear una instancia de un servidor de aplicaciones PERL, PHP, C, donde cuando se ejecuta como MÓDULO ese programa es el servidor web (apache) en sí mismo.

Debido a todo esto, hay muchos problemas de rendimiento, seguridad y portabilidad que entran en juego. Pero es bueno saber qué no es CGI primero, para entender qué es.


Un CGI es un programa (o una API web) que usted escribe y lo guarda en el sitio del servidor web. CGI es un archivo.

Este archivo se sienta y espera en el servidor web. Cuando el navegador del cliente envía una solicitud al servidor web para ejecutar su archivo CGI, el servidor web ejecuta su archivo CGI en el sitio del servidor. Las entradas para este programa CGI, si las hay, son del navegador del cliente. Las salidas de este programa CGI se envían al navegador.

¿Qué idioma usas para escribir un programa CGI? Otras publicaciones ya mencionan c, java, php, perl, etc.


Un ejemplo de la vida real: una base de datos complicada que debe mostrarse en un sitio web. Dado que la base de datos se diseñó en algún lugar alrededor de 1986 (!), Muchos datos se empaquetaron de diferentes maneras para ahorrar espacio en disco.

A medida que avanzaba el desarrollo, los desarrolladores ya no podían resolver solicitudes de datos complicadas solo en SQL, por ejemplo, porque los algoritmos de clasificación eran inusuales.

Hay tres soluciones sensibles:

  1. Rápido y sucio: envíe los datos no almacenados a PHP, ordénelos allí. Obviamente, una solución muy costosa, porque esto se repetiría cada vez que se llame la página.
  2. escriba un complemento en el motor de la base de datos, pero el administrador no estaba preparado para permitir que se ejecutara código extraño en su servidor, o
  3. puede procesar los datos en un programa (C, Perl, etc.) y generar HTML. El programa en sí mismo va a / cgi-bin, y lo llama el servidor web (por ejemplo, Apache) directamente, no a través de PHP.

CGI ejecuta su script en la Solución # 3 y envía el efecto al navegador. Tiene la velocidad del programa compilado, la flexibilidad de un lenguaje mejor que SQL y no necesita escribir complementos en el servidor SQL. (De nuevo, este es un ejemplo específico de SQL y C)


Un script CGI es un programa de consola / shell. En Windows, cuando utiliza una ventana de "Símbolo del sistema", ejecuta los programas de la consola. Cuando un servidor web ejecuta un script CGI, proporciona una entrada al programa de consola / shell utilizando variables de entorno o "entrada estándar". La entrada estándar es como escribir datos en un programa de consola / shell; en el caso de un script CGI, el servidor web hace la escritura. El script CGI escribe los datos en "salida estándar" y esa salida se envía al cliente (el navegador web) como una página HTML. La salida estándar es como la salida que se ve en un programa de consola / shell, excepto que el servidor web lo lee y lo envía.

Un script CGI puede ejecutarse desde un navegador. El URI normalmente incluye una cadena de consulta que se proporciona a la secuencia de comandos CGI. Si el método es "obtener", la cadena de consulta se proporciona al script CGI en una variable de entorno llamada QUERY_STRING. Si el método es "post", la cadena de consulta se proporciona a la secuencia de comandos CGI utilizando la entrada estándar (la secuencia de comandos CGI lee la cadena de consulta de la entrada estándar).

Un uso temprano de los scripts CGI fue para procesar formularios. Al comienzo de HTML, los formularios HTML normalmente tenían un atributo de "acción" y un botón designado como el botón "enviar". Cuando se presiona el botón de envío, el URI especificado en el atributo "acción" se enviará al servidor con los datos del formulario enviado como una cadena de consulta. Si la "acción" especifica un script CGI, el script CGI se ejecutará y luego generará una página HTML.

RFC 3875 "La Interfaz de puerta de enlace común (CGI)" define parcialmente CGI usando C, como diciendo que las rutinas de la biblioteca C obtienen acceso a las variables de entorno "o variables de entorno".

Si está desarrollando un script CGI con C / C ++ y usa Microsoft Visual Studio para hacerlo, entonces desarrollaría un programa de consola.