2010-08-04 26 views
0

[編輯]

我已經重新編輯了前面的問題 - 因爲我誤會了是造成問題 - 因此充足的片斷我之前是一隻紅鯡魚。感謝wimdvx,我對於發生了什麼有了更清晰的想法。

首先,我使用的是基於this one的代碼,用於處理來自Paypal的IPN通知。

我無法使用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-bi N/webscr:80 (php_network_getaddresses:的getaddrinfo 失敗:名稱或服務不知道)在 /home/minime/test-socket.php第2個 php_network_getaddresses:的getaddrinfo 失敗:名稱或服務不

已知(0)

誰能解釋一下如何解決這個問題嗎?

我的服務器

+0

它是否至少打印「Bah,hambug!...」部分? – NullUserException 2010-08-04 12:18:12

回答

4

你不打開一個套接字的URL之前忘了$符號上運行Ubuntu LTS 10.0.4,你必須打開它到IP或FQDN。

使用

$socket_ur = 'www.mywebsite.com'; 

可能會有幫助。

但是你想要達到什麼目的?

+0

我不明白你在說什麼。看看這個:http://php.net/manual/en/function.fsockopen.php。關於我想要達到的目標 - 我會認爲這個問題說得很清楚。我需要打開一個套接字,以便將一些數據發送到遠程服務器。 – morpheous 2010-08-04 12:36:44

+0

好的,那你爲什麼不使用久經考驗的組件(Zend Framework或PEAR)或PHP的[curl functions](http://php.net/manual/en/book.curl.php)來做到這一點?而你做錯了什麼是你試圖打開一個URL到一個套接字,只是沒有任何意義,你必須打開一個IP或FQDN(完全合格的域名)的套接字。 – wimvds 2010-08-04 12:44:27

+0

我正在使用fsockopen()函數調用的遺留代碼。事實證明,您可能對我使用url有所瞭解。我寫了一個快速腳本來測試打開www.google.com的套接字並且工作正常。爲了早日咬掉你的頭,抱歉。我會看看我是否可以修復這個 – morpheous 2010-08-04 12:51:28

0

您thefile指針變量

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