Будьте осторожны, избегая любых входящих данных, которые вы можете вводить в команду, используя escapeshellarg () .
Использование абсолютных путей к исполняемому файлу по вашему выбору сводит к минимуму риск того, что скрипт PHP вызовет неправильный файл.
Кроме этого, я не вижу, в чем суета в некоторых других ответах - в конце концов, вы не говорите о том, чтобы позволить пользователям выполнять произвольные команды. (Поправьте меня, если я ошибаюсь.) В общем, выполнение внешних команд из PHP - это очень хорошая практика с точки зрения безопасности IMO.
Вы должны иметь в виду, что вызываемая вами программа работает с правами пользователя PHP и может не иметь возможности делать все, но я предполагаю, что вы уже это знаете.