1

我在反序列化 curl 响应时收到“ Notice: unserialize(): Error at offset 0 of 1081 bytes ”错误。

卷曲请求页面 - 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);
?>
4

2 回答 2

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但未发送任何发布数据。我不会在这里解释它,而是将您转介给您,这是您问题的基础

解析度

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)) ;

?>
于 2013-07-16T07:36:26.300 回答
0

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

另外,请注意 ping2.php 中的结束标记,因为它可能包含多余的不需要的空格

于 2013-07-16T07:38:48.440 回答