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

  • Автор темы Автор темы Enigma
  • Дата начала Дата начала

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%?
 
из-за чего это может быть
Пустой %ZennoPosterCurrentPath%, лишний слеш, ещё какая-то дичь.

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

Запусти, посмотри:
Код:
Развернуть Свернуть Копировать
rundll32 sysdm.cpl,EditEnvironmentVariables
+ имя юзера процесса сервера в диспетчере задач.
 
Последнее редактирование:
  • Оценить
Реакции: Enigma
Попробовал в окошке "Переменные среды" добавить в "Системные переменные" такую же запись ZennoPosterCurrentPath , как для Administrator, но это не помогло.

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

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

Показало "Текущий владелец скрипта: IUSR"

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

Есть ли идеи, как получить актуальное значение админской переменной ZennoPosterCurrentPath через "неадминский" php, запускающий батник?
 
  • Оценить
Реакции: Enigma
Попробовал через runas, вопросов стало еще больше. Метод-то явно неплохой, но там тьма нюансов, в которых необходимо разобраться. Лучше потратить это же время на зенку :)

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

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

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