我正在尝试使用PHP在服务器上建立自己的短信网关我已经安装了Gammu,并且很好地配置了权限和设置。现在它使用以下原型脚本发送SMS fine:
<?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
}
?>
不过,英文(拉丁语)短信一切正常,但尝试发送阿拉伯文短信未能送达目的地,尽管运营商回复OK,
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
同样的结果。 最佳答案
最后,在多次阅读this section of documentation并尝试之后,我发现正确的命令选项如下:
gammu -c /etc/gammurc sendsms TEXT 02222000 -unicode -textutf8 "نص عربي"
在上面的示例中,使用
-textutf8
而不是-text
。另外,请注意,可以选择提供-c
配置文件路径,以确保将要使用的设备。关于php - 没有提供使用PHP的阿拉伯文Gammu SMS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51048762/