trofimovfedor
@trofimovfedor
PHP

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

Мне нужно разработать командную строку на сайте для Windows. При переходе по директориям через "cd" и выполнением новой команды весь прогресс теряется и я возвращаюсь к рабочей директории. Можно ли как то не завершать сессию и оставаться в ранее выбранной директории?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 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");
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
DKLINE Санкт-Петербург
от 120 000 до 150 000 ₽
Laptop.ru Москва
от 130 000 до 170 000 ₽
Laptop.ru Москва
от 150 000 до 190 000 ₽