Не могу запустить PHP на Win через HTA с помощью команд setx PATH и php -S - PullRequest
0 голосов
/ 19 января 2019

Я создал файл HTA для установки и запуска PHP в Windows.Если уже есть папка my_app_folder/php с какой-либо версией PHP, через файл HTA у нас есть только 1) установить переменную Win PATH с путем к папке PHP, 2) перейти к /my_app_folder где index.php и 3) выполнить CMD-команду php -S.

Итак, вот код моего тестового файла 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 не запускается.Однако, если переменная PATH уже существует, и я открываю файл, процесс php.exe запускается.

ps.Я заметил, что сервер PHP готов как минимум через 17 секунд после того, как мы запустили команду php -S, поэтому, как вы видите, я использую setTimeout() перед открытием браузера и следую по адресу localhost.

1 Ответ

0 голосов
/ 19 января 2019

Хорошо, достаточно использовать полный путь к php.exe в CMD-команде, если у нас возникли проблемы с переменной PATH:

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