Скрипт Curl не работает для некоторых URL - PullRequest
2 голосов
/ 13 января 2012

Я хочу выполнить URL, для которого я использую 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);

Когда я выполняю этот скрипт на моем локальном сервере, он работает нормально, то есть смс отправляется пользователю и сообщение успешно записывается в сообщение.txt файл.

Но когда я загружаю его на сервер (hostgator).Не работает.

Я поговорил с хостинг-провайдером.Ранее curl не был включен, но был включен после разговора.Даже тогда приведенный выше пример не запускается.

Я попытался изменить приведенный выше код, вызвав простой URL: http://google.com. Он правильно работает на сервере с некоторым текстом, записанным в файле message.txt.

Я не могучтобы понять причину этого.

Ответы [ 7 ]

3 голосов
/ 20 февраля 2014

$ messageUrl = "http://bulksms.mysmsmantra.com:8080/WebSMS/SMSAPI.jsp?username=myusername&password=pass&sendername=sender&mobileno=mob&message=hi";

Удалите порт 8080 из указанного выше URL. Это сработало.

1 голос
/ 15 января 2012

Попробуйте это прямо перед curl_close:

echo "Error CURL: " . curl_error($curl) . " \nError number: " . curl_errno($curl);
0 голосов
/ 19 мая 2017

Использовать urlencode ($ message).Используйте urlencode () только для части сообщения вашего URL.И, как упоминалось в других ответах, удалите «: 8080» из URL.

0 голосов
/ 09 сентября 2015

Проблема связана с портом 8080. Хост не отвечает на этот порт. Вам нужно связаться с вашим хостинг-провайдером, чтобы открыть его. Или вы можете просто удалить 8080 из URL.

0 голосов
/ 15 июня 2012

Это та же проблема, с которой я сталкиваюсь с SMS Mantra Http API.

. Код прекрасно работает с локальным сервером, установленным дома.Но когда вы загружаете код на хост-сервер, такой как сервер GODaddy, он не будет работать.

Возможно, хост-сервер GODaddy не разрешает подключение к порту 8080 как стандартный порт.

0 голосов
/ 13 января 2012

Вам необходимо установить 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'); 

Посмотри, работает ли это.

0 голосов
/ 13 января 2012

Возможно, на рабочем сервере установлен брандмауэр, который запрещает PHP-скрипту открывать соединение с портом 8080 и позволяет ему открываться для 80.

Попробуйте запустить клиент telnetили просто откройте порт для 8080, чтобы проверить его.

Пример с telnet:

telnet bulksms.mysmsmantra.com 8080
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...