Как использовать PHP для выполнения скрипта AutoHotKey на Windows Server 2016? - PullRequest
1 голос
/ 17 апреля 2019

У меня есть Windows Server 2016 VPS с Plesk и PHP 7.1x.

Я пытаюсь выполнить простой скрипт AutoHotKey из PHP, используя следующую команду:

<?php shell_exec('start /B "C:\Program Files\AutoHotkey\AutoHotkey.exe" C:\inetpub\vhosts\mydomain.com\App_Data\myahkscript.ahk'); ?>

Это единственная строка на странице. Я пробовал разные ахк-скрипты, текущий просто создает MsgBox.

Когда я запускаю свою страницу php, в диспетчере задач VPS я вижу три процесса, созданные с ожидаемым USR: cmd.exe, conhost.exe и php-cgi.exe. Тем не менее, моя страница PHP просто ждет на сервере, а на сервере ничего не происходит.

Я также пробовал эту же строку, за исключением замены shell_exec на exec. Это, кажется, не имеет значения. Я пытался без start /b с обеими командами. В этом случае страница PHP завершается, но новые процессы не запускаются.

Я не могу найти никаких ошибок ни в одном журнале: Mod_Security, Plesk Firewall, IIS.

Есть идеи?

EDIT: Я попробовал свою команду из командной строки VPS и сразу ударил по лицу очевидной проблемой пробела в «Программных файлах». Я процитировал строку, как показано выше, и команда работает. Это исключило зависание при запуске из PHP. Однако команда по-прежнему ничего не делает при выполнении с веб-страницы.

EDIT: Основываясь на предложениях из упомянутой публикации 'debugging exec ()':

var_dump: string(0)""
$output: Array()
$return_val: 1

Один момент заключался в том, что я, вероятно, не смог бы вызывать приложения с графическим интерфейсом. Это ставит под сомнение идею.

...