我正在开发一个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]);
错误消失了,但没有输出甚至没有像贴出来的那样。
答案 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);