未发送使用 PHP 的阿拉伯语 Gammu SMS

Gammu SMS in Arabic using PHP does not be delivered

我正在尝试使用 PHP 在我的服务器上拥有自己的 SMS 网关。我已经安装了 Gammu,并且我配置了权限和设置。现在它可以使用以下原型脚本正常发送 SMS:

<?php
$text = $_POST['text'];
$numb = $_POST['numb'];
if ($text != '' && $numb != ''){
  //die('echo "'.$text.'" | gammu --sendsms TEXT '.$numb);
  echo "<pre>";
  //die(passthru('whoami'));
  $command = 'echo "'.$text.'" | gammu --sendsms TEXT '.$numb.' >> '.__DIR__.'/smslog.txt';//.'" | gammu --sendsms TEXT '.$numb;

  echo passthru($command);
  //echo $command;
}
else{
  ?>
  <form method="POST">
  <input type="text" name="numb">
  <textarea name="text"></textarea>
  <input type="submit">
  </form>
  <?php
}
?>

然而,英文文本(拉丁文)SMS 一切正常,但尽管运营商回复 OK,但尝试发送阿拉伯文 SMS 却未能送达目的地,

Sending SMS 1/1....waiting for network answer..OK, message reference=18

此外,我注意到,从终端使用相同的 gammu 命令和阿拉伯文本,它交付良好,但具有 ?? ??????? ??? 文本表示。我部分地认为这是编码问题,但我不知道如何解决它。

我的服务器是 Ubuntu Linux 16.04。

更新:

我已经弄清楚如何使用 gammu 命令从 bash 发送阿拉伯语文本,如下所示,其中使用了 -unicode 选项:

gammu sendsms TEXT 022222222 -unicode -text "نص عربي"

However, the script regarded above, send the Arabic message but it look something like 333333333 on the phone. I have no any idea about what occurred to the string when it send to the command stream via passthru and I tried to use exec also and the same result.

最终在阅读 this section of documentation 和多次尝试后,我发现正确的命令选项如下所示:

gammu -c /etc/gammurc sendsms  TEXT 02222000 -unicode -textutf8 "نص عربي"

在上面的示例中,使用了 -textutf8 而不是 -text。另外,请注意 -c 配置文件路径是可选的,以确保将使用什么设备。