我有一个带有Plesk和PHP 7.1x的Windows Server 2016 VPS。
我正在尝试使用以下命令从PHP执行一个简单的AutoHotKey脚本:
<?php shell_exec('start /B "C:\Program Files\AutoHotkey\AutoHotkey.exe" C:\inetpub\vhosts\mydomain.com\App_Data\myahkscript.ahk'); ?>
这是页面上的唯一行。我尝试了不同的ahk脚本,当前的脚本只是创建了一个MsgBox。
当我执行php页面时,在VPS任务管理器上,我看到使用预期的USR创建的三个进程:cmd.exe,conhost.exe和php-cgi.exe。但是,我的PHP页面只是在服务器上等待,而实际上在服务器上什么也没发生。
除了用shell替换shell_exec外,我还尝试过同一行。这似乎没有什么区别。我尝试了在两个命令中都没有start /b
的情况。在这种情况下,PHP页面将完成,但不会启动任何新进程。
我在任何日志中都找不到任何错误:Mod_Security,Plesk Firewall,IIS。
有什么想法吗?
编辑: 我从VPS命令提示符处尝试了命令,并立即面对“程序文件”中明显的空格问题。我引用了如上所示的字符串,该命令有效。从PHP运行时,这消除了挂起。但是,从网页执行该命令后仍然没有执行任何操作。
编辑: 基于引用的帖子“ debugging exec()”的建议:
var_dump: string(0)""
$output: Array()
$return_val: 1
有一点是,我可能无法调用GUI应用程序。这使这个想法受挫。