Php fsockopen()返回空指针,$errstr为空(无错误消息)

Php fsockopen()返回空指针,$errstr为空(无错误消息),php,linux,ubuntu,paypal,paypal-ipn,Php,Linux,Ubuntu,Paypal,Paypal Ipn,[编辑] 我重新编辑了前面的问题——因为我误解了问题的起因——因此,我之前得到的大量片段只是一条红鲱鱼。多亏了wimdvx,我对正在发生的事情有了更清晰的了解 首先,我使用基于的代码来处理来自Paypal的IPN通知 我无法使用fsockopen进行连接,因此我编写了一个小片段(如下所示),尝试连接到Paypal <?php $fp = fsockopen("www.sandbox.paypal.com/cgi-bin/webscr", 80, $errno, $errstr,30

[编辑]

我重新编辑了前面的问题——因为我误解了问题的起因——因此,我之前得到的大量片段只是一条红鲱鱼。多亏了wimdvx,我对正在发生的事情有了更清晰的了解

首先,我使用基于的代码来处理来自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\u网络\u获取地址:getaddrinfo 失败:中的名称或服务未知 /第2行的home/minime/test-socket.php PHP警告:fsockopen():无法 连接到 www.sandbox.paypal.com/cgi-bin/webscr:80 (php_网络_getaddresses:getaddrinfo 失败:中的名称或服务(未知) /第2行的home/minime/test-socket.php php\u网络\u获取地址:getaddrinfo 失败:未指定名称或服务

已知(0)

有人能解释一下如何解决这个问题吗


我正在服务器上运行Ubuntu10.0.4 LTS

您忘记了文件指针变量前面的
$
符号

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

您忘记了文件指针变量前面的
$
符号

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

您没有打开指向URL的套接字,必须打开指向IP或FQDN的套接字

使用

我可以帮忙


但是,您到底想实现什么呢?

如果不打开URL的套接字,您必须将其打开到IP或FQDN

使用

我可以帮忙


但是你到底想达到什么目的呢?

它至少要打印“呸,哈姆巴格!”“部分吗?它至少要打印“呸,哈姆巴格!”“部分吗?我不明白你在说什么。看看这个:。关于我正在努力实现的目标,我认为这个问题已经很清楚了。我需要打开一个套接字,以便向远程服务器发送一些数据。好的,那么为什么不使用经过测试的组件(Zend Framework或PEAR)或PHP来完成这项工作呢?你做错了的是,你试图打开一个指向URL的套接字,这毫无意义,你必须打开一个指向IP或FQDN(完全限定域名)的套接字。我正在处理使用fsockopen()函数调用的遗留代码。事实证明,关于我对url的使用,你可能是对的。我写了一个快速脚本来测试打开www.google.com的套接字,这很有效。很抱歉早些时候咬了你的头。我会看看我是否能解决这个问题。顺便说一句,这里有一个问题可以帮助您了解如果您想坚持使用套接字(以及如何使用curl:p将混乱转换为更干净的代码),您必须做些什么。我根据您的反馈对我的问题进行了编辑。请看我编辑的问题,我不明白你在说什么。看看这个:。关于我正在努力实现的目标,我认为这个问题已经很清楚了。我需要打开一个套接字,以便向远程服务器发送一些数据。好的,那么为什么不使用经过测试的组件(Zend Framework或PEAR)或PHP来完成这项工作呢?你做错了的是,你试图打开一个指向URL的套接字,这毫无意义,你必须打开一个指向IP或FQDN(完全限定域名)的套接字。我正在处理使用fsockopen()函数调用的遗留代码。事实证明,关于我对url的使用,你可能是对的。我写了一个快速脚本来测试打开www.google.com的套接字,这很有效。很抱歉早些时候咬了你的头。我会看看我是否能解决这个问题。顺便说一句,这里有一个问题可以帮助您了解如果您想坚持使用套接字(以及如何使用curl:p将混乱转换为更干净的代码),您必须做些什么。我根据您的反馈对我的问题进行了编辑。请看我编辑的问题