MONO C #: MKBundle'd «Hello World» Сценарий выполняет только с кодом выхода «11» на веб-сервере
Вопрос
Я хотел бы запустить код 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 код, а после загрузки файла на веб-сервер он смог выполнить его.