#php
#php
Вопрос:
Недавно я получил свой ноутбук с настройкой Apache на Ethernet-соединении моего университета. Теперь я могу подключиться к своему компьютеру из любого места, если у меня есть либо IP-адрес, либо имя хоста (которое я могу выбрать). Теперь я хочу создать веб-командную строку, которая позволит мне запускать команды на моем ноутбуке с любого устройства.
Одна из проблем заключается в том, что я не могу запустить команду «cd». У меня настроен PHP-скрипт, чтобы он мог запускать серию команд, разделенных символом новой строки. Итак, я запускаю «cd .. /», а затем «pwd», но он все еще находится в корневом каталоге моего веб-приложения. Как мне это исправить?
Комментарии:
1. Хотя я сам не голосовал против, я бы предположил, что это произошло, потому что это крайне небезопасный обходной путь для проблемы, которая была решена давно: просто используйте SSH. SSH доступен на Mac, Android, Linux, BSD … и если вы на Windows, используйте putty, это небольшая загрузка.
Ответ №1:
Если вы сделаете это:
shell_exec("cd ..");
shell_exec("pwd");
Тогда вторая команда будет выполнена с новой оболочкой, которая имеет тот же начальный каталог, что и первая, потому что это подпроцесс текущего PHP.
Изменение текущего каталога с первым shell exec не продлится до второго. Такая серия зависимых команд оболочки работает только при одновременном выполнении всех:
shell_exec("cd .. ; pwd");
Комментарии:
1. С помощью popen можно ли открыть /bin/ bash и отправить с помощью команд fwrite?
Ответ №2:
Я думаю, вам нужно изменить каталог текущего процесса / скрипта. Вы делаете это с chdir
помощью . Затем вы можете запустить shell_exec
.
Я полагаю, вы понимаете, какие серьезные проблемы с безопасностью создает ваше решение…
Комментарии:
1. Спасибо, что ответили на вопрос, а также подняли вопросы безопасности. Слишком часто люди просто говорят: «Это небезопасно, не делайте этого», фактически не помогая. Это было освежающее изменение по сравнению с этим.