Функция PHP shell_exec: выполнение внешней команды

Практически все языки программирования включают в себя возможность запуска внешнего кода или команд оболочки операционной системы. Наличие такой возможности считается правилом приличия и полной функциональности языка. Использование такой возможности считается угрозой безопасности и отсутствием полной функциональности приложения, написанного на этом языке.

PHP предоставляет программисту возможность запустить внешнюю команду и обеспечивает передачу результатов запуска в переменную в виде текста.

Операционная среда и внешняя команда

Выбор не особенно велик, но разнообразие вариантов может поставить в тупик. Если сервер, на котором запущен PHP, находится под управлением Windows, то особенных непредвиденных ситуаций не будет. В семействе линуксоидов возможны различные неопределенности.

Запуск внешнего кода

В любом случае запуск внешнего кода - это угроза. Потому применение возможности PHP shell_exec() - это продуманное и взвешенное решение.

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

Вариантов, когда управление с веб-ресурса требует «внешнего содействия», очень много, но предпочтительно, когда любой контакт с «внешней средой» исполняется «собственными силами» без использования PHP shell_exec().

Синтаксис и логика использования

Вызов внешнего кода выполняется путем присваивания результата вызова функции shell_exec() некоторой переменной.

Примеры PHP shell_exec

В данном случае apache & PHP установлены на рабочем компьютере с Windows 10. Сразу обнаружились проблемы с кириллицей и очевидно несоответствие потоков вывода команды операционной системе обычному потоку, воспринимаемого браузером.

Для корректного отображения вывода потребуется анализировать работу shell_exec(). В PHP примеры тестирования должны быть максимально жесткими для достижения безопасного использования.

Безопасное использование

Любая операционная система допускает формирование командной строки, когда в одной строчке записывается сразу несколько команд. Функция shell_exec допускает использование такой командной строки.

Во всех случаях применения функции следует предусмотреть набор тестовых примеров, на котором проверить безопасность использования обращения к операционной системе.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.