卷曲脚本不适用于某些网址

时间:2012-01-13 11:43:49

标签: php curl

我想执行一个我正在使用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文件中写入一些文本。

我无法理解这背后的原因。

6 个答案:

答案 0 :(得分:3)

答案 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"来自网址。