Батник с %ZennoPosterCurrentPath% не срабатывает через удаленный запуск

Enigma

Client
Регистрация
16.06.2017
Сообщения
187
Благодарностей
31
Баллы
28
Запускаю на удаленном сервере батник вот этой функцией:

Код:
<?php
exec('C:/inetpub/wwwroot/test.bat');
?>

Текст батника:

Код:
@echo off
echo ZennoPoster directory = %ZennoPosterCurrentPath%
echo Starting task... (-names "Project")
"C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.17.2.0\Progs\TasksRunner.exe" -o StartTask -names "Project"
timeout /t 1
echo Set tries count to -1... (-names "Project")
"C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.17.2.0\Progs\TasksRunner.exe" -o SetTries -1 -names "Project"
timeout /t 1
echo Set threads count to 1... (-names "Project")
"C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.17.2.0\Progs\TasksRunner.exe" -o SetThreads 1 -names "Project"
Этот код отрабатывает просто прекрасно!

Но как только я заменяю прямые пути на универсальный вариант %ZennoPosterCurrentPath%, то срабатывания через php-функцию уже не происходит (запуск батника кликом мышью при этом отрабатывает норм):

Код:
@echo off
echo ZennoPoster directory = %ZennoPosterCurrentPath%
echo Starting task... (-names "Project")
"%ZennoPosterCurrentPath%\TasksRunner.exe" -o StartTask -names "Project"
timeout /t 1
echo Set tries count to -1... (-names "Project")
"%ZennoPosterCurrentPath%\TasksRunner.exe" -o SetTries -1 -names "Project"
timeout /t 1
echo Set threads count to 1... (-names "Project")
"%ZennoPosterCurrentPath%\TasksRunner.exe" -o SetThreads 1 -names "Project"

Как думаете, из-за чего это может быть и как добиться срабатывания с %ZennoPosterCurrentPath%?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 374
Благодарностей
3 298
Баллы
113
из-за чего это может быть
Пустой %ZennoPosterCurrentPath%, лишний слеш, ещё какая-то дичь.

ZennoPosterCurrentPath, как помню, задаётся для юзера, а сервер php работает как служба под "Система"?

Запусти, посмотри:
Код:
rundll32 sysdm.cpl,EditEnvironmentVariables
+ имя юзера процесса сервера в диспетчере задач.
 
Последнее редактирование:
  • Спасибо
Реакции: Enigma

Enigma

Client
Регистрация
16.06.2017
Сообщения
187
Благодарностей
31
Баллы
28
Попробовал в окошке "Переменные среды" добавить в "Системные переменные" такую же запись ZennoPosterCurrentPath , как для Administrator, но это не помогло.

Глянул имя владельца скрипта этим кодом:

Код:
<?php
echo 'Текущий владелец скрипта: ' . get_current_user();
?>
Показало "Текущий владелец скрипта: IUSR"

Если даже добавить запись для него (хотя я хз как) - это какой-то костыль получится, ведь переменную всегда придется обновлять руками. Это совсем нехорошо.

Есть ли идеи, как получить актуальное значение админской переменной ZennoPosterCurrentPath через "неадминский" php, запускающий батник?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 374
Благодарностей
3 298
Баллы
113
  • Спасибо
Реакции: Enigma

Enigma

Client
Регистрация
16.06.2017
Сообщения
187
Благодарностей
31
Баллы
28
Попробовал через runas, вопросов стало еще больше. Метод-то явно неплохой, но там тьма нюансов, в которых необходимо разобраться. Лучше потратить это же время на зенку :-)

Решил не городить костыли и сделать управляющий шаблон, который занимается запуском батников. А сигналы для запуска отсылать через php, взаимодействуя с текстовыми файлами на веб-сервере.

Спасибо за то, что не прошли мимо :az:
 
  • Спасибо
Реакции: Yuriy Zymlex

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)