我想执行一个我正在使用curl的网址。
我有以下curl脚本:
$messageUrl = "http://bulksms.mysmsmantra.com:8080/WebSMS/SMSAPI.jsp?username=myusername&password=pass&sendername=sender&mobileno=mob&message=hi";
//$content=file_get_contents($messageURl);
$ch = curl_init($messageUrl);
$fp = fopen("message.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
当我在本地服务器上执行此脚本时,它运行正常,即短信发送给用户并且消息已成功写入message.txt文件。
但是当我将它上传到服务器(hostgator)上时。它不起作用。
我与托管服务提供商进行了一次谈话。早期的卷曲未启用但在会话后启用。即使这样,上面的例子也没有运行。
我尝试通过调用简单的网址来更改上面的代码:http://google.com。它在服务器上正确执行,并在message.txt文件中写入一些文本。
我无法理解这背后的原因。
答案 0 :(得分:3)
$ messageUrl =“http://bulksms.mysmsmantra.com:8080/WebSMS/SMSAPI.jsp?username=myusername&password=pass&sendername=sender&mobileno=mob&message=hi”;
从上面的网址中删除8080端口。它奏效了。
答案 1 :(得分:1)
在curl_close
:
echo "Error CURL: " . curl_error($curl) . " \nError number: " . curl_errno($curl);
答案 2 :(得分:0)
生产服务器上可能有防火墙,这会阻止PHP脚本打开与端口8080
的连接,并允许它打开到80
。
尝试启动telnet客户端,或者只是打开8080
端口进行测试。
telnet示例:
telnet bulksms.mysmsmantra.com 8080
答案 3 :(得分:0)
在设置CURLOPT_RETURNTRANSFER
之前,您需要设置CURLOPT_FILE
。
尝试:
$messageUrl = "http://bulksms.mysmsmantra.com:8080/WebSMS/SMSAPI.jsp?username=myusername&password=pass&sendername=sender&mobileno=mob&message=hi";
$ch = curl_init($messageUrl);
$fp = fopen("message.txt", "w+");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
read_file('message.txt');
看看是否有效。
答案 4 :(得分:0)
这与我SMS Mantra Http API
所面临的问题相同。
该代码与家庭位置安装的本地服务器完美配合。但是当您将代码上传到托管服务器(如GODaddy服务器)时,它将无法正常工作。
可能GODaddy主机服务器不允许连接到端口8080
作为标准端口。
答案 5 :(得分:0)
使用urlencode($ message)。 仅将urlencode()用于URL的消息部分。正如其他答案所述,删除":8080"来自网址。