Следует ли применять escapeshellarg() и escapeshellcmd() совместно с popen()

Gride

Новичок
Утро доброе, господа.

Подскажите, пожалуйста, в каких случаях следует использовать escapeshellarg() и escapeshellcmd()?
Мануал рекомендует применять их к для экранирования команд и аргументов при вызове exec() и system(). Про необходимость их применения для popen() ничего не говорится.
В описании функции popen() говорится:

В случае работы в безопасном режиме, строка с командой экранируется с помощью escapeshellcmd().
Получается, что в небезопасном режиме я должен сделать это вручную?

Я пытаюсь сделать следующее:

PHP:
$handler = popen($sendmail_path.' -t -i -f'.$mail->get_from());

if($handler)
{
   fwrite($handler, $mail->to_string());
   pclose($handler);
}
Как сделать правильно:
PHP:
$handler = popen(escapeshellcmd($sendmail_path).' -t -i -f'.escapeshellarg($mail->get_from()));
или
PHP:
$handler = popen(escapeshellcmd($sendmail_path.' -t -i -f'.$mail->get_from()));
Теоретически, $sendmail_path может содержать другие параметры командной строки сендмейла (по умолчанию, я его беру из php.ini), а $mail->get_from() может вернуть отправителя "с пробелом", что-нибудь вроде Vasiliy Pupkin <[email protected]>.
 
Сверху