Ответ 1
Используйте функцию, которую PHP имеет для этой цели:
$cmd =
"/usr/bin/do-something " .
escapeshellarg($arg1) .
' ' .
escapeshellarg($arg2);
Вы также можете использовать escapeshellcmd()
Какая разница?
escapeshellarg()
ТОЛЬКО добавляет 'вокруг строки, а затем перед любыми другими символами.
http://www.php.net/escapeshellarg
escapeshellcmd()
удаляет все символы, чувствительные к оболочке ($,\и т.д.), но не добавляет кавычки.
http://www.php.net/manual/en/function.escapeshellcmd.php
Запуск в том случае, если вы используете параметр escapeshellarg()
как параметр ЧАСТЬ А QUOTE. Затем он становится бесполезным (на самом деле добавляет кавычки в микс).
Вообще говоря, мы предпочитаем использовать escapeshellcmd()
с добавленными нашими кавычками.
$cmd =
"/usr/bin/do-something '" .
escapeshellcmd($arg1) .
"' '" .
escapeshellcmd($arg2) .
"'";
Будьте в безопасности!