PHP curl响应未序列化问题


PHP curl response unserialize issue

我在取消对卷曲响应进行序列化时收到"注意:取消序列化():偏移量为1081字节的0处出错"错误。

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

收到您的问题。

错误

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

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

$result变量包含一条错误消息,因此不能对进行非序列化

此外,在ping2.php中关闭标记时要小心,因为它可能包含额外的不需要的空格