Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   LLamada a un cgi desde php (https://www.clubdelphi.com/foros/showthread.php?t=26495)

apicito 25-10-2005 11:16:27

LLamada a un cgi desde php
 
LLamada a un cgi desde php
Estoy intentando hacer una llamada a un cgi hecho en delphi desde un scrip php y no consigo que me funcione.
Utilizo IIS sobre un servidor w2003 y php5.
La llamada la hago así:
Código PHP:

$enlace=include('/p3.exe/sesasunto?part='.$part.'&sesion='.$p5.'&paxina='.$p7); 

Me da el siguiente error:
Código:
Código PHP:

failed to open streamHTTP request failedHTTP/1.1 404 Objeto no encontrado in d:\aWeb\www\novas.php on line 79 

Alguien puede ayudarme.

kayetano 25-10-2005 18:59:17

Hola

Si lo que quieres es ejecutar un cgi debes utilizar funciones del tipo passthru o exec.

apicito 26-10-2005 08:22:10

El método que estoy utilizando funciona bien ya que el cgi delphi genera un stream que se muestra corectamente en la página web. Mi problema es que para que funcione tengo que ponerle antes del nombre del ejecutable el
Código:

http://misitio.com/
de forma que cuando hago pruebas en local va bien pero al subirlo al servidor remoto se relentiza mucho la carga, upongo que la razón es que tiene que cargar el cgi a través de http. Lo que trato de hacer es configurar, no sé si en el IIS o en el php, el sitio de forma que permita hacer un include directo del cgi, es decir, llamarlo así:
Código PHP:

$enlace=include('p3.exe/sesasunto?part='.$part.'&sesion='.$p5.'&paxina='.$p7); 

en vez de así:
Código PHP:

$enlace=include('http://misitio.com/p3.exe/sesasunto?part='.$part.'&sesion='.$p5.'&paxina='.$p7); 

Por cierto, he probado a utilizar passthru y exec y no me muestra nada en la página.
Código PHP:

$enlace='p3.exe?sesasunto?part='.$part.'&sesion='.$p5.'&paxina='.$p7;
passthru($enlace,$salida); 


kayetano 26-10-2005 10:28:20

Hola

Te cuento, "include" lo que hace es abrir un archivo y meter su contenido dentro de otro, tu problema reside en que el CGI no se interpreta desde local sino que intenta abrirlo a piñon, al añadir "http..." estas haciendo que el servidor interprete el CGI y te devuelva, supongo, codigo HTML.

Con passthru realiza la ejecución del CGI y muestra el resultado por la salida estandar, el problema que veo es como estas pasando los parametros, que debería ser del tipo:
Código PHP:

$enlace='p3.exe/sesasunto '.$part.' '.$p5.' '.$p7;
passthru($enlace,$salida); 

Supongo que "sesasunto" es el CGI.

apicito 26-10-2005 13:33:39

No, el cgi es p3.exe, que es web server application de delphi. Dentro de este cgi existe un webmodule y dentro de éste varias actions, una de ellas es "sesasunto". Como te he dicho la forma en que hago la llamada funciona bien, incluso ahora que cambie el tipo del web server application de cgi a ISAPI (dll). Mi problema es que no se que tengo que cambiar en la configuración (del IIS o del Php) para que me permita hacer la llamada directa al exe o dll, ya que si no le pongo el http://misitio.com/ no lo encuentra y al hacer la llamada a través de http: se hace demasiado lento ya que tiene que bajarse a traves de web los 2 megas que pesa el p3.exe o el p3.dll.

kayetano 26-10-2005 14:15:31

Hola

Esto es lo que he econtrado

Cita:

Incluir en el conf de httpd la siguiente linea:

AddHandler isapi-isa .dll

y tambien en:

ScriptAlias /cgi-bin/ "C:/Archivos de programa/Apache Group/Apache2/cgi-bin/"

<Directory "C:/Archivos de programa/Apache Group/Apache2/cgi-bin">
AllowOverride None
Options Indexes Includes ExecCGI
Order allow,deny
Allow from all
</Directory>


por defecto la opcion de Options es None y hay que cambiarla por Indexes Includes ExecCGI
No lo he probado porque nunca se me ha dado el caso pero Igual te sirve de algo.


La franja horaria es GMT +2. Ahora son las 14:58:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi