PHP cURL代码在线失败但在localhost上失败。请帮忙!

时间:2010-07-19 15:57:55

标签: php json curl

我无法弄清楚为什么这段代码在我的PC(localhost)上本地工作但在公共服务器上没有在线工作?它可以是PHP版本的问题吗?感谢所有的帮助!

$post_data = array('item_type_id' => '8', 'string_key' => 'Test Nyckel2', 'string_value' => 'Test Varde2', 'string_extra' => 'Test Extra', 'numeric_extra' => 'Test Numeric Extra', 'is_public' => true, 'is_public_for_contacts' => true);

    $post_data = json_encode(array('item' => $post_data), JSON_FORCE_OBJECT);

    $c = curl_init('http://example.com/items.json'); 

    curl_setopt($c, CURLOPT_VERBOSE, 1);
    curl_setopt($c, CURLOPT_COOKIE, 'fb_cookie='.$fb_code);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_POSTFIELDS, $post_data);

    curl_exec($c);

    curl_close($c);

3 个答案:

答案 0 :(得分:1)

我看到你在json_encode()调用中使用了options参数。

然而,这是PHP doc所说的(http://www.php.net/manual/en/function.json-encode.php):

5.3.0 The options parameter was added.

所以PHP代码使用的是未定义的常量JSON_FORCE_OBJECT?

答案 1 :(得分:1)

如果请求因任何原因失败,则

curl_exec返回FALSE。然后,您可以使用curl_error()curl_errno()

获取错误代码和消息
if (curl_exec($c) === FALSE) {
    die("Curl failed: " . curl_error($c));
}

永远不要假设卷曲调用会成功。确实检查了返回的值以防万一。即使curl设置正确,网络故障也可能导致连接中断,远程服务器可能出现故障,防火墙出现故障等等......

答案 2 :(得分:0)

cURL Library是否安装在无效的服务器上?

如果你不知道,请使用phpinfo();功能