Mono C #: MKBUNDLE'D "HELLO WORLD" Script se ejecuta con solo el código de salida "11" en un servidor web

StackOverflow https://stackoverflow.com//questions/24014152

  •  21-12-2019
  •  | 
  •  

Pregunta

Me gustaría ejecutar código Mono (C #) en un servidor web que no tiene instalado Mono Runtime. Dado que MKBUNDLE puede producir código nativo, primero estoy tratando de obtener un script "Hello World" sencillo para trabajar en ambos lados, que funciona localmente, pero no en el servidor web.

C # Helloworld.CS Script:

 using System;

 public class HelloWorld
 {
    public static void Main()
    {
       System.Console.WriteLine("Hello, World!");
    }
 }

Hago compilación y agrupación usando: $ gmcs helloworld.cs -out: helloworld.exe
$ MKBUNDLE -O HelloWorld Helloworld.EXE --STATIC --DEPS

Mi única forma permitida de ejecutar este script en el servidor web es usando un script PHP, que tiene lo siguiente:

 $cmd = "./helloworld";
 exec($cmd, $array, $return_code);
 var_dump($array);
 //passthru($cmd, $return_code);
 var_dump($return_code);

Localmente, este script funciona y obtengo la siguiente respuesta:

matriz (1) { [0]=> Cadena (13) "¡Hola, mundo!" } int (0)

Pero en el servidor web, este es todo el script devuelve

matriz (0) {} int (11)

Código de salida Bash 11 es no estándar de acuerdo con este y este EXIT CODLISTS.

Ambas máquinas están en un Linux de 64 bits y un "archivo HelloWorld" devuelve el siguiente ... En la máquina local:

HelloWorld: Ejecutable LSB ELF de 64 bits, X86-64, versión 1 (SYSV), vinculada dinámicamente (usa libs compartidos), para GNU / Linux 2.6.24, BuildID [SHA1]= FBC9731FB13202C604B025BA3202C604B025BA3EEFE51C69DC40D8, no se despojó

en el servidor web:

HelloWorld: Ejecutable LSB ELF de 64 bits, X86-64, versión 1 (SYSV), vinculada dinámicamente (usa libs compartidos), despojado

podría "vincularse dinámicamente (usos libs compartidos), eliminado" ¡Sigue significa que algunas bibliotecas incrustadas o tiempo de ejecución mono todavía faltan?

¿Fue útil?

Solución

He creado una máquina virtual con el mismo sistema operativo que el servidor web, al ejecutar el paquete, obtuve la falla de la segmentación (núcleo descargado) ", que tiene el código de salida '11'.MKBUNDLE no es una forma totalmente compatible de implementar un software mono escrito en las máquinas Linux.

Entonces, al final, instalé mono en la máquina virtual, compiló y mkbundleó el código, y después de subir el archivo al servidor web, pudo ejecutarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top