无法使用 setx PATH 和 php -S 命令通过 HTA 在 Win 上启动 PHP

Can't start PHP on Win via HTA with setx PATH and php -S commands

我创建了 HTA 文件以在 Windows 上安装和启动 PHP。如果 my_app_folder/php 文件夹已经存在某些版本的 PHP,通过 HTA 文件我们只有 1) 设置 Win PATH 变量和 PHP 文件夹的路径, 2) 转到 /my_app_folder,其中 index.php 和 3) 运行 php -S CMD 命令。

下面是我测试 HTA 文件的代码:

<script>
var objUserInfo = new ActiveXObject('WScript.network');
var pathToUserFolder = 'C:\Users\'+objUserInfo.UserName+'\';

var WShell = new ActiveXObject('WScript.Shell');

WShell.Run('cmd /c setx PATH '+pathToUserFolder+'my_app_folder\php',0,true);

WShell.CurrentDirectory = pathToUserFolder+'my_app_folder';
WShell.Run('cmd /c php -S localhost:80',0,false);

setTimeout(function() {     
    WShell.Run('chrome -url http://localhost:80', 0, false);
}, 17000);
</script>

如果我打开这个 HTA 文件,PATH 变量被成功添加,但是 php.exe 进程没有被 运行ned。但是,如果 PATH 变量已经存在并且我打开文件,则 php.exe 进程正在 运行ned。

ps。我注意到 PHP 服务器在我们 运行 执行 php -S 命令后至少 17 秒准备就绪,所以正如您所见,我在打开浏览器之前使用 setTimeout() 然后localhost 地址。

好的,如果我们在 PATH 变量方面遇到一些问题,在 CMD 命令中使用 php.exe 的完整路径就足够了:

WShell.Run('cmd /c C:\my_app_folder\php\php.exe -S localhost:80',0,false);