@trofimovfedor

Как не завершать сессию командной строки при использовании shell_exec()?

Мне нужно разработать командную строку на сайте для Windows. При переходе по директориям через "cd" и выполнением новой команды весь прогресс теряется и я возвращаюсь к рабочей директории. Можно ли как то не завершать сессию и оставаться в ранее выбранной директории?
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MadridianFox
Web-программист, многостаночник
Никак.
Каждый вызов shell_exec порождает новый процесс командного интерпретатора (bash или cmd), который наследует переменные окружения от текущего php процесса.
Текущая дирректория это состояние командного интерпретатора, которое теряется между вызовами shell_exec.

В зависимости от решаемой задачи, вам необходимо либо запускать отдельно процесс cmd и передавать в него команды, либо запоминать текущее состояние и добавлять в каждый вызов shell_exec установку этого состояния, наприме банально вставлять перед каждой командой cd вот так:
$cwd = "/path/to/dir";
shell_exec("cd {$cwd}; ls");
shell_exec("cd {$cwd}; chmod +x banana.sh");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽