PHP卷曲响应反序列化问题

时间:2013-07-16 07:13:41

标签: php serialization curl

我收到“ 注意:unserialize():偏移0时错误1081字节 ”在反序列化卷曲响应时出错。

卷曲请求页面 - ping1.php:

<?php
$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => "http://example.com/test/curl/ping2.php",
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);
echo unserialize($result);
?>

卷曲响应页面 - ping2.php

<?php
$data=array('test'=>1,'testing'=>2);
echo serialize($data);
?>

2 个答案:

答案 0 :(得分:1)

得到你的问题。

错误

当我运行你的代码并看到我得到的结果时

string '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/experimentation/Stack/stack.php<br />
does not allow request data with POST requests, or the amount of data provided in
the request exceeds the capacity limit.
<hr>
<address>Apache/2.2.22 (Fedora) Server at localhost Port 80</address>
</body></html>
a:2:{s:4:"test";i:1;s:7:"testing";i:2;}' (length=474)

为什么我会遇到这个错误?

由于您使用CURLOPT_POST但未发送任何发布数据,因此收到此错误。我不会在这里解释,而是会引用您的post这是您的问题的基础。

解决

CURLOPT_POST不是必需的,因为我们没有发布任何数据。

这是您的工作代码

<?php

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => "http://example.com/test/curl/ping2.php",
    CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);
print_r(unserialize($result)) ;

?>

答案 1 :(得分:0)

$ result变量包含错误消息,因此无法反序列化

另外,请注意在ping2.php中关闭标签,因为它可能包含额外的不需要的空格