Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Ejecutar .exe en servidor unix/windows

Hola amigos.
Estoy intentando ejecutar un programa .exe para encriptar y desencriptar claves en el servidor. Lo tengo hecho en Delphi. Está confeccionado para correr en cmd, sin ventanas. Admite tres parámetros, con los que encripta y desencripta strings. Despues las graba en un fichero que debería leer desde PHP.

He estado buscando por los foros y lo más que he encontrado es que hay que hacerlo usando exec(), system() y alguna otra función similar.

Estoy probando con todas estas funciones y no he conseguido que se ejecute el .exe.

Dejo el programita de prueba.

Código PHP:
<?php
echo '<pre>';
$ultima_linea system('EnDeStr.exe 4a5156e1b569ff3d ClaveDeLaBaseDeDatos ClaveDeLasVisitas'$retval);
// Imprimir informacion adicional
echo '
</pre>
<hr />Ultima linea de la salida: ' 
$ultima_linea '
<hr />Valor de retorno: ' 
$retval;
?
El valor de retorno siempre es 1
Y el ejecutable no se ejecuta.

¿Alguien podría echarme una manita?
O a lo mejor es que no se puede hacer...

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 21-01-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Si el servidor es UNIX, sólo podrás ejecutarlo si está funcionando sobre una plataforma Intel (Nada de ARM, Motorola, PowerPC...), y siempre y cuando tengas instalado el entorno de ejecución WineHQ, ya que UNIX no tiene las mismas bibliotecas que Windows.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 21-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jhonalone Ver Mensaje
Ejecutar .exe en servidor unix/windows
No podrás ejecutar un EXE generado en un servidor UNIX, como ya te han dicho.
Tendrás que traducir el ejecutable a otro lenguaje (PHP), o recompilarlo en Lazarus por ejemplo (que es multiplataforma) para poder ejecutarlo en UNIX.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 22-01-2014
Avatar de Julián
Julián Julián is offline
Merodeador
 
Registrado: may 2003
Ubicación: en mi casa
Posts: 2.019
Poder: 10
Julián Va por buen camino
Prueba con exec() -> http://no2.php.net/manual/en/function.exec.php
__________________
"la única iglesia que ilumina es la que arde"
Anonimo
Responder Con Cita
  #5  
Antiguo 22-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias a todos por vuestro interés.

Bueno, creo que el servidor es Linux, pero creo que es muy similar a Unix.

¿Si el servidor fuera Windows, sería más fácil?

Neftali, nunca he trabajado con Lazarus, aunque he oido hablar mucho de él en los foros de Delphi, agradecería una breve ilustración sobre este entorno de programación, sus posibilidades y cómo conseguirlo.

No sé en qué plataforma trabaja mi servidor, ni cómo saberlo Ñuño (Me gusta tu pseudónimo porque es muy espaÑÑÑÑol).

Y por último, Julián, he probado con exec() y tampoco me ejecuta el .exe. A lo mejor no estoy haciéndolo bien o el servidor está en "Save mode", (que he leído por ahí) y por éso no me ha funcionado, ilumíname si puedes con un ejemplo.

GRACIAS de nuevo a todos por vuestro interés.
Sigo estudiando y buscando...
Responder Con Cita
  #6  
Antiguo 22-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jhonalone Ver Mensaje
Bueno, creo que el servidor es Linux, pero creo que es muy similar a Unix.
Correcto, básicamente son lo mismo (al menos para lo que a tí te interesa).
Nopuedes lanzar un EXE generado en Delphi (Windows) en un servidor de este tipo. A no ser que sea sobre una máquina virtual, pero eso en realidad es montar un Windows dentro del Linux para lanzar el ejecutable.

Cita:
Empezado por jhonalone Ver Mensaje
¿Si el servidor fuera Windows, sería más fácil?
No es que sería más fácil, es que sería posible.
En un servidor Windows podrías lanzar (a priori sin problemas) una aplicación hecha en Delphi.

Cita:
Empezado por jhonalone Ver Mensaje
Neftali, nunca he trabajado con Lazarus, aunque he oido hablar mucho de él en los foros de Delphi, agradecería una breve ilustración sobre este entorno de programación, sus posibilidades y cómo conseguirlo.
Es en cierta manera "similar" a Delphi. La ventaja es que es multiplatafarma. Quiere decir que podrías usar un Linux, para instalar Lazarus y el programa que compilaras, entonces sí se podría ejecutar en un Linux.
Si tu aplicación está echa en Delphi, dependiendo que cómo sea, podría compilar (sin apenas sin cambios) en Lazarus.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 22-01-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por jhonalone Ver Mensaje
No sé en qué plataforma trabaja mi servidor, ni cómo saberlo Ñuño.
Pues es esencial que sepas la plataforma exacta (al menos, qué microprocesador y qué sistema operativo usa). Pregunta al administrador del sistema, si es necesario, pero antes de hacer nada más deberías saberlo.

Y me alegra que te guste el nick. Precisamente me lo puse por la Ñ.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #8  
Antiguo 22-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias de nuevo por vuestra ayuda, (Neftali, Ñuño) (Por orden de respuesta, que de importancia para mí es la misma)

Seguiré investigando y si lo consigo, ya os cuento.

Un saludo.
Responder Con Cita
  #9  
Antiguo 25-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola, de nuevo.
Os cuento.
He instalado Lazarus.
He convertido las unidades que usaba con Delphi.
Me ha costado entender el tema de los paquetes, pero he conseguido complilar el programa con Lazarus.
El programa comienza según código que sigue:
Código Delphi [-]
program Desencriptar;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}

y el script en php es así:
Código PHP:
<?php
echo '<pre>';
exec'(Desencriptar.exe 4a5156e1b569ff3d ClaveDeLaBaseDeDatos ClaveDeLasVisitas'$stre$retval);
// Imprimir informacion adicional
echo '
</pre>
<hr />Valor de retorno: ' 
$retval;
?>
Y me sigue devolviendo el código de retorno = 1

Bueno, el Lazarus lo he instalado y ejecutado en Windows que es la plataforma que utilizo. No sé si tendré que hacer algo en el IDE de Lazarus para que genere código compatible con Linux/Unix.
Si alguien puede ayudarme, gracias.
Un saludo.
Responder Con Cita
  #10  
Antiguo 25-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Ah! se me olvidó aclarar un par de cosas. El ejecutable generado con Lazarus, es casi 3 veces mayor que el generado por Delphi. Y otra cosa el ejecutable generado por Lazarus, funciona PERFECTAMENTE en Windows.
Saludos.
Responder Con Cita
  #11  
Antiguo 27-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Pues si el programa te funciona, ya está casi todo.
Ahora instalas el Lazarus en Linux/Unix, compilas el programa y debería funcionar.

Que es lo que ya habíamos comentado aquí:

Cita:
Empezado por Neftali Ver Mensaje
Quiere decir que podrías usar un Linux, para instalar Lazarus y el programa que compilaras, entonces sí se podría ejecutar en un Linux.
Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 27-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias, Neftalí.
Es que ahora tengo otros dos problemas.
1- Nunca he utilizado Linux y no lo tengo instalado, (ni tengo idea) en mi PC.
2- Tambien tendría que instalar el Lazarus en un sistema que desconozco.

Digo yo, si el Lazarus el multiplataforma, y tiene una opción de generar un ejecutable Linux (Al menos éso he entendido en la pestaña "Proyecto/Opciones de Proyecto/Opciones del Compilador/Generación de Código/Plataforma Objetivo/Sistema Operativo Deseado/Linux") Cuando intento compilar con esta "plataforma objetivo" me lanza un error y me genera una Unit llamada fcllaz. el error es el siguiente: "fcllaz.pas(0,0) Fatal: Can not find unit system used by fcllaz."
Consecuentemente, no termina la compilación.
Estoy empezando con Lazarus, pero creo que lo que intento es lícito.
Sigo investigando y buscando.
He encontrado otro compilador de free pascal llamado CodeTyphon, lo he instalado siguiendo las instrucciones obtenidas en la página de descarga que es pilotlogic.com y después de esperar casi media hora de insstalación en cmd ha terminado y no me ha creado el icono en el escritorio, y no sé cómo puedo ejecutarlo.
Aaaaah! Me crecen los enanos.....

Gracias por vuestra ayuda, sigo peleando....

Un saludo.
Responder Con Cita
  #13  
Antiguo 27-01-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jhonalone Ver Mensaje
He encontrado otro compilador de free pascal llamado CodeTyphon
Codetyphon es lazarus, al que han añadido muchos componentes y han hecho algunos cambios.
Responder Con Cita
  #14  
Antiguo 27-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Bueno, bueno, bueno....
Casi haciendo juegos malabares, he encontrado la forma de entrar en el Ide de CodeTyphon, he tenido que añadir un paquete en el que tengo 4 unidades que uso en mi proyecto, he intentado compilar el programa con la salida en Linux y he obtenido el mismo mensaje de error: "fcllaz.pas(0,0) Fatal: Can not find unit system used by fcllaz."

El IDE ES MUY SEMEJANTE al de Lazarus y creo que que los dos van paralelos ("para lelos") por que generan los mismos problemas, y son casi exactamente iguales.

Estoy empezando a "bajar las manos" nada es lo que parece y lo que yo busco, creo que sólo puedo conseguirlo como dice Neftalí (Creo que lleva acento en la í) O sea, instalando un sistema Linux y despues el Lazarus para Linux. Yo no llego a tanto, pero creo que si llamamos multiplataforma a un programa es porque puede correr en varias plataformas, no porque tenga una versión para cada plataforma. Poco mérito tiene que un programa ejecutado en Linux, produzca ejecutables en Linux. ¡¡¡Faltaría más que no pudiera hcerlo!!!
Lo verdaderamente interesante, sería que corriendo en un sistema, pudiera generar ejecutables, que pudieran ejecutarse en otros sistemas a elegir.

Bueno, esto son elucubraciones mías, quizás por la "pataleta" de que esperaba de un compilador algo que no me ha proporcionado.

Tanto Lazarus, como CodeTyphon prometen ser compatibles con otras plataformas y no lo cumplen. Vamos, si para hacer un ejecutable en Linux
tengo que generarlo desde Linux, esto quiere decir que lo que ambos prometen de que se pueden generar ejecutables en Android, por poner un ejemplo, tengo que instalar un sistema operataivo Android y generarlos desde el mismo.

Con todo el mérito de ambos compliladores, esto es poco operativo.

Estoy empezando a ser pesado, pero es que estoy muy defraudado.

Saludos para todos los que tenéis la paciencia de leerme.
Responder Con Cita
  #15  
Antiguo 27-01-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jhonalone Ver Mensaje
Estoy empezando a ser pesado, pero es que estoy muy defraudado.
¿Defraudado por algo que no conoces y que casi estás todavía instalando?

Como he comentado antes, codetyphon es lazarus, por eso son tan parecidos, porque es lo mismo.
Creo que no deberías rendirte tan fácilmente, tendrías que informarte, mirar la web de lazarus, la documentación, preguntar en sus foros, etc.
Responder Con Cita
  #16  
Antiguo 27-01-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Cross-platform Lazarus form designer uses LCL (Lazarus Component Library) which is especially designed for cross platform usage. Building your project for different platforms will give you native look and feel on each platform. There are no changes to the project needed.
Por cierto, para android, al ser java, funciona en distintos sistemas, pero no es gracias al "compilador" que uses, sino al lenguaje en sí.
Responder Con Cita
  #17  
Antiguo 28-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jhonalone Ver Mensaje
Yo no llego a tanto, pero creo que si llamamos multiplataforma a un programa es porque puede correr en varias plataformas, no porque tenga una versión para cada plataforma. Poco mérito tiene que un programa ejecutado en Linux, produzca ejecutables en Linux. ¡¡¡Faltaría más que no pudiera hcerlo!!!
Lo verdaderamente interesante, sería que corriendo en un sistema, pudiera generar ejecutables, que pudieran ejecutarse en otros sistemas a elegir.
Según la WIKI:

Software multiplataforma puede dividirse en dos tipos; requiere una compilación individual para cada plataforma que le da soporte, y el otro se puede ejecutar directamente en cualquier plataforma sin preparación especial,...

En el caso de los ejecutables yo me conformo con lo segundo... ;-)
Entiendo que el mismo programa puedes compilarlo sin cambios en ambos sistemas y te va a funcionar.

Windows y Unix son sistemas operativos diferentes y no tiene lógica que un ejecutable (EXE) o una DLL que corre directamente sobre el sistema funcione en ambos sin cambios. Lo que tú comentas de multiplataforma (que sería lo ideal) me da la impresión de que sólo funciona con programas que "corren" sobre máquinas virtuales, por lo tanto en ese caso, los programas en sí no son multiplataforma, lo que son multiplataforma son las máquinas virtuales donde corren; Por ejemplo Java.

¿Has probado a instalar una máquina virtual en Windows (VirtualBox) con un Ubuntu, por ejempo? Luego instalas Lazarus y compilas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #18  
Antiguo 28-01-2014
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Gracias de nuevo a todos.
Dos cosas son ciertas, que tengo poca experiencia con Lazarus/CodeTyphon y otra que tal vez necesitaba haberme informado más de sus resultados reales, pues yo entendí lo de multiplataforma, como "generación de código en una plataforma, para ser usado en otra" y veo que no es el caso.

Estoy seguro que funcionaría, Neftalí
Cita:
¿Has probado a instalar una máquina virtual en Windows (VirtualBox) con un Ubuntu, por ejempo? Luego instalas Lazarus y compilas.

Pero mis conocimientos no llegan a tanto.
Desinstalaré los dos, puesto que en Windows ya me apaño con Delphi, y renunciaré a ejecutar el programa en el servidor.

Gracias a todos por aportarame tantas soluciones, pero yo soy sólo un aficionado y no me compensa el esfuerzo que tengo que hacer para lograr el resultado digamos que el balance coste/beneficio no me compensa.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar orden de unix en kylix emeritos Lazarus, FreePascal, Kylix, etc. 1 23-02-2008 22:45:10
Ejecutar aplicación en Unix MAngelito Lazarus, FreePascal, Kylix, etc. 6 08-12-2005 01:11:15
Instalar firebird en un servidor unix andressanchez Varios 2 18-08-2005 21:42:28
Enviar un comando a una maquina unix desde Windows SMTZ Internet 0 15-11-2004 18:19:24
Servidor Unix Linux Omar Alejandro Varios 1 25-09-2003 04:13:45


La franja horaria es GMT +2. Ahora son las 08:19:43.


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
Copyright 1996-2007 Club Delphi