MONO C #: MKBundle'd «Hello World» Сценарий выполняет только с кодом выхода «11» на веб-сервере

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

  •  21-12-2019
  •  | 
  •  

Вопрос

Я хотел бы запустить код Mono (C #) на веб-сервере, который не установлен моно-временной среды. Поскольку MkBundle может произвести родной код, я сначала пытаюсь получить простой сценарий «Hello World» для работы с обеих сторон, который проходит локально, но не на веб-сервере.

c # helloworld.cs Сценарий:

 using System;

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

Я делаю компиляцию и объединение: $ gmcs helloworld.cs -out: helloworld.exe
$ mkbundle -o helloworld helloworld.exe --static --deps

Мой единственный допустимый способ выполнить этот скрипт на веб-сервере, с помощью скрипта PHP, который имеет следующее:

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

Локально, этот сценарий работает, и я получаю следующий ответ:

Массив (1) { [0]=> Строка (13) "Привет, мир!" } int (0)

Но на веб-сервере это все сценарий возвращается

Массив (0) {} int (11)

Bash Exit Code 11 нестандартный в соответствии с Это и Это Выходные коделки.

Оба машины находятся на 64-битном Linux, а «файл HelloWorld» возвращает следующие ...
На локальной машине:

HellowOrld: ELF 64-битный исполняемый файл LSB, X86-64, версия 1 (Sysv), динамически связанные (использует общие libs), для GNU / Linux 2.6.24, Breedive [SHA1]= FBC9731FB13202C604B025BA3EEFE51C69DC40D8, не раздевается

на веб-сервере:

Helloworld: ELF 64-битный исполняемый файл LSB, X86-64, версия 1 (SYSV), динамически связанные (использует общие libs), разделить

может "динамически связано (использует общие libs), разделить" все еще означают, что некоторые встроенные библиотеки или моно-временное время выполнения будут пропущены?

Это было полезно?

Решение

Я создал виртуальную машину с той же ОС, что и веб-сервер, при запуске расслоения я получил «неисправность сегментации (CORE DAMPED)», который имеет код выхода «11».MkBundle не является полностью совместимым способом для развертывания моноплата программного обеспечения на машинах Linux.

Так что в конце концов я установил моно на виртуальную машину, скомпилированную и mkbundle'd код, а после загрузки файла на веб-сервер он смог выполнить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top