fsockopen () возвращает нулевой указатель, а $ errstr пуст (без сообщения об ошибке) - PullRequest
0 голосов
/ 04 августа 2010

[Изменить]

Я переосмыслил предыдущий вопрос - поскольку я неправильно понял, в чем причина проблемы - и, следовательно, достаточный фрагмент, который у меня был раньше, был красной сельдью. Благодаря wimdvx у меня есть более четкое представление о том, что происходит.

Прежде всего, я использую код, основанный на этот , для обработки уведомлений IPN от Paypal.

Мне не удалось подключиться с помощью fsockopen, поэтому я написал небольшой фрагмент (показанный ниже), чтобы попытаться подключиться к Paypal.

<?php
    $fp = fsockopen("www.sandbox.paypal.com/cgi-bin/webscr", 80, $errno, $errstr,30);
   if(!$fp) {
        echo "$errstr ($errno)<br />\n";
   }
   else{
   $out = "GET / HTTP/1.1\r\n";
   $out .= "Host: www.sandbox.paypal.com/cgi-bin/webscr\r\n";
   $out .= "Connection: Close\r\n\n\n";
   fwrite($fp, $out);
   }    

?>

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

Предупреждение PHP: fsockopen (): php_network_getaddresses: getaddrinfo Ошибка: имя или служба не известны в /home/minime/test-socket.php в строке 2 Предупреждение PHP: fsockopen (): невозможно присоединиться www.sandbox.paypal.com/cgi-bin/webscr:80 (php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестна) в /home/minime/test-socket.php в строке 2 php_network_getaddresses: getaddrinfo не удалось: имя или служба не

известно (0)

Может кто-нибудь пролить свет на то, как это исправить?

Я использую Ubuntu 10.0.4 LTS на сервере

Ответы [ 2 ]

4 голосов
/ 04 августа 2010

Вы не открываете сокет для URL, вы должны открыть его для IP или полного доменного имени.

Использование

$socket_ur = 'www.mywebsite.com';

может помочь.

Но чего именно вы пытаетесь достичь?

0 голосов
/ 04 августа 2010

Вы забыли символ $ перед переменной указателя файла

if(!$fp) { print "Bah, hambug!. Connect to $socket_url failed. Error: $errstr"; } ?>
...