Батник с %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, запускающий батник?
 
Попробовал через runas, вопросов стало еще больше. Метод-то явно неплохой, но там тьма нюансов, в которых необходимо разобраться. Лучше потратить это же время на зенку :)

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

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

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