使用PHP的阿拉伯语Gammu SMS不会被发送



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

<?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一切正常,但是尽管运营商响应确定,但尝试发送阿拉伯语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 "نص عربي"

但是,上面提到的脚本发送阿拉伯语消息,但它看起来像手机上的333333333。我不知道是什么 当字符串通过以下方式发送到命令流时发生passthru和我也尝试使用exec,结果相同。

最后,在多次阅读本节文档并多次尝试之后,我发现正确的命令选项如下所示:

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

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

最新更新