Функція PHP shell_exec: виконання зовнішньої команди

9 0 Новини високих технологій

Практично всі мови програмування включають в себе можливість запуску зовнішнього коду або команд оболонки операційної системи. Наявність такої можливості вважається правилом пристойності і повної функціональності мови. Використання такої можливості вважається загрозою безпеки і відсутністю повної функціональності програми, написаної мовою. PHP надає програмісту можливість запустити зовнішню команду і забезпечує передачу результатів запуску в змінну у вигляді тексту.

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

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


Функція PHP shell_exec: виконання зовнішньої команди
У будь-якому випадку запуск зовнішнього коду - це загроза. Тому застосування можливості PHP shell_exec() - це продумане і зважене рішення. Зазвичай метою застосування такої можливості є періодичний запуск зовнішнього додатку, який збирає інформацію і переміщує її в папки веб-ресурсу. Часто використовується запуск зовнішнього коду для передачі статистики роботи сайту, фінансового звіту та ін. Варіантів, коли управління з веб-ресурсу вимагає «зовнішнього сприяння», дуже багато, але переважно, коли будь-який контакт з «зовнішнім середовищем» виповнюється «власними силами» без використання PHP shell_exec().

Синтаксис і логіка використання

Виклик зовнішнього коду виконується шляхом присвоювання результату виклику функції shell_exec() деякої змінної.
Функція PHP shell_exec: виконання зовнішньої команди
В даному випадку apache & PHP встановлені на робочому комп'ютері з Windows 10. Відразу виявилися проблеми з кирилицею і очевидно невідповідність потоків виводу команди операційній системі звичайного потоку, сприйманого браузером. Для коректного відображення виводу потрібно аналізувати роботу shell_exec(). В PHP приклади тестування повинні бути максимально жорсткими для досягнення безпечного використання.
Функція PHP shell_exec: виконання зовнішньої команди
Будь-яка операційна система допускає формування командного рядка, коли в одному рядку записується відразу кілька команд. Функція shell_exec допускає використання такої командного рядка. У всіх випадках застосування функції слід передбачити набір тестових прикладів, на якому перевірити безпеку використання звернення до операційної системи.