如何在Windows Server 2016上使用PHP执行AutoHotKey脚本?

问题描述 投票:0回答:1

我有一个带有 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 页面只是在服务器上等待,服务器上实际上没有任何反应。

我也尝试过同样的行,除了用 exec 替换 shell_exec 。这似乎没有什么区别。我已经尝试过在两个命令中不使用

start /b
。在这种情况下,PHP 页面完成,但不会启动新进程。

我在任何日志中都找不到任何错误:Mod_Security、Plesk Firewall、IIS。

有什么想法吗?

编辑: 我在 VPS 命令提示符下尝试了我的命令,并立即因“程序文件”中明显的空间问题而受到打脸。我引用了如上所示的字符串,并且该命令有效。这消除了从 PHP 运行时的挂起。但是,从网页执行该命令时仍然不执行任何操作。

编辑: 基于参考帖子“调试 exec()”的建议:

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

有一点是我可能无法调用 GUI 应用程序。这阻碍了这个想法。

php iis autohotkey
1个回答
0
投票

在taskschd.msc中创建计划

command1

SCHTASKS /F /Create /TN command1 /TR "\"D:\Program Files\AutoHotkey\AutoHotkey.exe\" \"D:\xampp\htdocs\cmd.ahk\"" /SC Once /ST 00:00

将 ahk 命令写入

cmd.ahk

<?php
$command = '';
$command .= 'run, C:\\Windows\\SysWOW64\\calc.exe'.PHP_EOL;
$command .= 'msgbox, opened calulator'.PHP_EOL;

$fp = fopen('cmd.ahk', 'w+');
$content = $command.'';
fwrite($fp, $content);
fclose($fp);

$exec = 'schtasks /run /tn "command1"';
exec($exec);

执行php

curl localhost/test.php

© www.soinside.com 2019 - 2024. All rights reserved.