张贴Instagram时的致命错误“喜欢”

时间:2013-12-28 08:04:31

标签: php api curl error-handling instagram

我正在开发一个Instagram API网站,我想通过PHP来拍照。这是我在下面的脚本。但如果我从浏览器中调用它,我总是得到这个:

致命错误:功能名称必须为 12 中的字符串

<?php

    $url = "https://api.instagram.com/v1/media/XXXXXxXxx_xxxxxxxxxx/likes";
    $fields = array(
        'access_token'       =>      'xxxxxxx.xxxxxxx.xxxxxxxxxxxxxxxxx',
        'action'             =>      'like'
    );

    $curl = curl_init();

    curl_setopt($curl,CURLOPT_POST,1);
    curl_setopt($curl,CURLOPT_POSTFIELDS,$http_build_query($fields));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    echo curl_exec($curl);
    curl_close($curl);

?>

第12行是:

curl_setopt($curl,CURLOPT_POSTFIELDS,$http_build_query($fields));

如果我改变:

....$http_build_query[$fields]);

错误消失了,但没有输出甚至没有像贴出来的那样。

1 个答案:

答案 0 :(得分:1)

由于可以调用variable function,PHP会尝试调用名为$http_build_query的函数。该变量未在代码中的任何位置定义,并且为NULL。因此,您实际上将尝试调用名称​​而不是字符串的函数,这会导致PHP触发致命错误。

删除$

curl_setopt($curl,CURLOPT_POSTFIELDS, http_build_query($fields));
                                     ^

您还缺少代码中的CURLOPT_URL行。以下应该可行:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($curl);
curl_close($curl);