Задать вопрос
@trofimovfedor

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

Мне нужно разработать командную строку на сайте для Windows. При переходе по директориям через "cd" и выполнением новой команды весь прогресс теряется и я возвращаюсь к рабочей директории. Можно ли как то не завершать сессию и оставаться в ранее выбранной директории?
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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");
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы