shell exec — PHP shell_exec завершился ошибкой из-за определенного символа

я использую shell_exec функция для вызова mailx Команда на Ubuntu для отправки почты, но получил ошибку, так как в команде есть определенный символ, пожалуйста, смотрите мой код ниже и результат.

<?php
$stringA="Visit STAR WARS™";
$stringB="Visit STAR WARS";

echo "StringA:", $stringA, "<br/>";
$res = shell_exec("echo $stringA | mailx -s 'testA' [email protected]");
echo $res, "<br/>";

echo "StringB:", $stringB, "<br/>";
$res = shell_exec("echo $stringB | mailx -s 'testB' [email protected]");
echo $res, "<br/>";

Когда я вызываю эту страницу на сервере, я получаю страницу ниже:

StringA: Visit STAR WARS™
"/var/www/dead.letter" 1/19
StringB: Visit STAR WARS

и я получил письмо с содержанием Visit STAR WARSи не может получить письмо с контентом Visit STAR WARS™,

Я проверил из функции phpinfo, и default_charset это «utf-8».
если я запускаю команду "echo Visit STAR WARS™ | mailx -s 'testB' [email protected]"непосредственно в оболочке Ubuntu я могу получать почту с содержимым ** ™ **.

Может кто-нибудь помочь мне решить проблему, чтобы функция shell_exec могла отправлять почту с определенными символами.

0

Решение

$ [знак доллара] имеет особое значение в сценариях оболочки, поэтому вы не можете передать его в команде,

$res = shell_exec("echo '" . $stringA . "' | mailx -s 'testA' [email protected]");

и всегда лучше использовать escapeshellarg чтобы избежать ваших аргументов следующим образом:

$res = shell_exec("echo '" . escapeshellarg($stringA) . "' | mailx -s 'testA' [email protected]");
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]