stream_context_create()中的空值

时间:2012-11-29 12:52:20

标签: php paypal-adaptive-payments

我用于自适应PayPal支付。使用此代码

$params = array("http" => array( 
    "method" => "POST",
    "content" => $body_data,
    "header" =>  "X-PAYPAL-SECURITY-USERID: " . $API_UserName . "\r\n" .
    "X-PAYPAL-SECURITY-SIGNATURE: " . $API_Signature . "\r\n" .
    "X-PAYPAL-SECURITY-PASSWORD: " . $API_Password . "\r\n" .
    "X-PAYPAL-APPLICATION-ID: " . $API_AppID . "\r\n" .
    "X-PAYPAL-REQUEST-DATA-FORMAT: " . $API_RequestFormat . "\r\n" .
    "X-PAYPAL-RESPONSE-DATA-FORMAT: " . $API_ResponseFormat . "\r\n" 
));

$ctx = stream_context_create($params);

//open the stream and send request
$fp = @fopen($url, "r", false, $ctx);

//get response
$response = stream_get_contents($fp);

//check to see if stream is open
if ($response === false) {
   throw new Exception("php error message = " . "$php_errormsg");
}

//close the stream
fclose($fp);

但显示错误消息

  

消息:|| php错误消息= stream_get_contents()期望参数1是资源,布尔给定||

如何删除此请帮助我...... :)

2 个答案:

答案 0 :(得分:0)

发生这种情况是因为:

$fp = @fopen($url, "r", false, $ctx);

返回一个FALSE布尔值。删除@运算符(error control)并查看您的函数是否抛出任何错误或通知。另外,请检查并确保您的网址正确无误。

答案 1 :(得分:0)

您的fopen()来电失败(返回false)。你为什么用@

来抑制错误

无法访问$url中的任何内容。检查资源是否可访问,并且没有网络问题。

如果您尝试访问https安全链接,则需要安装并启用OpenSSL。

来自Manual

  

成功时返回文件指针资源,错误时返回FALSE。