как выполнить программу .exe с помощью php-скрипта

Я хочу выполнить .exe-файл на моем сервере Apache, используя php-скрипт. процедура следующая:

  1. пользователь приходит, заполняет html-форму

  2. он переходит к скрипту php

  3. php script выполняет файл name.exe

  4. php выводит вывод файла name.exe на страницу.

Обычно я запускаю файл name.exe из таких окон:

run--> cmd--> D:\name [command]

name.exe необходимо связываться с другими файлами, такими как библиотеки в том же каталоге.

полная команда в cmd в окнах выглядит так:

D:\name library.dll [input from user]

то программа выполняет и печатает некоторые результаты в окне cmd.

Я действительно хочу запустить эту программу на моем сервере, сформировав мои клиенты. Я не знаю, как, но теперь у меня есть способ сделать это.

Другой связанный с этим вопрос: есть ли какая-либо оболочка, которую я могу установить на сервер Linux и выполнить в ней имя .exe?

Пожалуйста, переосмыслите свое решение, так как это, скорее всего, вызовет больше проблем (особенно вопросов безопасности), чем оно решает. Благодаря тому, что скрипт PHP выполняет вашу программу, вы запускаете угрозу того, что пользователь вводит следующее в вашу форму:

 John Doe; rm \windows\* 

или

 John Doe; rm d:\name\* 

Вы хотите ограничить ввод пользователя очень контролируемым подмножеством, чтобы не вводить вредоносную команду.

PHP действительно предоставляет exec() но будьте очень осторожны.

Перед отправкой в ​​команду вы должны избегать ввода пользователя с помощью escapeshellarg .

 $saferinput = escapeshellarg($input); system('D:\name library.dll '.$saferinput); 

Вы, вероятно, хотите passthru () или exec () .

Что касается Linux, если name.exe работает хорошо под WINE , вы, вероятно, захотите использовать passthru() или shell_exec () и вызвать WINE для запуска name.exe . Я понятия не имею, что такое name.exe, поэтому, даже если он работает под WINE, нет никакой гарантии, что он действительно сработает .

Однако нет волшебной оболочки, которая позволяет Linux выполнять произвольные исполняемые файлы Windows.

Как уже отмечалось, будьте очень осторожны с тем, что вы можете получить, чтобы выполнить exec() или passthru() или что-нибудь еще, которое выполняет код вне вашего скрипта. Я не собираюсь говорить, что вы, вероятно, не должны делать то, что вы делаете, но я не работаю над тем, над чем вы работаете 🙂

Это очень плохая идея. Помимо необходимости предоставления смешных разрешений учетной записи пользователя, на которой выполняется ваш веб-сервер, что фактически дает кому-либо возможность посещать ваш сайт для запуска исполняемых файлов, вы рискуете проблемами безопасности потоков, проблемами с блокировкой файловой системы и другими.

Если вы абсолютно должны использовать этот exe, создайте систему очередей. Пусть ваш сайт отправит запрос формы в удобный репозиторий (скажем, базу данных) и периодически проводит опрос базы данных для запуска этого процесса. Это позволяет разделять учетные записи пользователей и связанные с ними разрешения для веб-сайта и exe, устраняет любые проблемы одновременного выполнения и уменьшает задержку ответа для вашего сайта.

Некоторые языки (cough) позволяют создать эту службу и код вашего сайта на одном языке / технологии, но в этом случае вам придется вырвать .NET или другой скомпилированный язык для создания такой службы.

Я думаю, мы можем сделать это, подключившись к серверу с помощью PHP SSH. Существует библиотека ( http://phpseclib.sourceforge.net/ ), которая позволяет вам подключаться к серверу через SSH. Раньше я пытался подключиться к серверу с помощью telnet и execte .exe. Но мой администратор школы заблокировал telnet из-за соображений безопасности, поэтому мне нужно работать над ssh.