У меня есть 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
Один момент заключался в том, что я, вероятно, не смог бы вызывать приложения с графическим интерфейсом. Это ставит под сомнение идею.