это немного сложно. :-) У меня есть веб-сайт, написанный на PHP, который должен вызывать внешнюю программу, написанную на .NET, работающую под Mono. Вызывает программу с:
/path/mono /path/executable arguments...
как обычно (я также попытался поместить это в скрипт bash и вызвать сам скрипт из PHP).
Насколько я могу судить, все настроено так, как требуется. Сам Mono работает нормально, исполняемый (или скрипт) с исполняемыми правами, владельцы в порядке. Правильная настройка также может быть подтверждена тем фактом, что если я запускаю указанную выше командную строку (или вызываю упомянутый скрипт) из командной строки на сервере (Debian Lenny), все работает отлично, мой исполняемый файл выполняется без ошибок.
Но, если PHP вызывает то же самое (используя exec (), system () или любой другой вариант), я немедленно получаю код выхода 6 из Mono, и мой исполняемый файл вообще не запускается (для его проверки, Я использую исполняемый файл "Hello World", который ничего не делает, но выдает одну строку вывода и возвращает 0). Скомпилировано без каких-либо дополнительных зависимостей, просто настоящее «Hello Word». Абсолютно уверен, что эта программа не возвращает код выхода 6, он должен исходить из Mono, но я нигде не смог найти его документированным.
Я могу вызывать все что угодно из PHP, так что это небезопасный режим или подобное ограничение, которое не позволит мне запускать внешние программы из PHP.
Спасибо за любую идею ...