推特没有';不接受PHP';s cURL,但是Linux';

推特没有';不接受PHP';s cURL,但是Linux';,php,curl,twitter,Php,Curl,Twitter,在尝试使用Twitter的API时,我为自己编写了一些很好的PHP脚本来生成所有需要的值,但如果我想执行它,它只会给我 字符串(0)” 代码400,这意味着,根据Twitter的 请求无效或无法以其他方式送达。附带的错误消息将进一步解释。在API v1.1中,未经身份验证的请求被视为无效,并将产生此响应 但同样的请求在普通终端curl中也能正常工作 以下是我的脚本中的代码段,它生成Linux命令并执行请求: $auth_str = "Authentication: OAuth ..."; $h

在尝试使用Twitter的API时,我为自己编写了一些很好的PHP脚本来生成所有需要的值,但如果我想执行它,它只会给我

字符串(0)”

代码400,这意味着,根据Twitter的

请求无效或无法以其他方式送达。附带的错误消息将进一步解释。在API v1.1中,未经身份验证的请求被视为无效,并将产生此响应

但同样的请求在普通终端
curl
中也能正常工作

以下是我的脚本中的代码段,它生成Linux命令并执行请求:

$auth_str  = "Authentication: OAuth ...";
$headers = array($auth_str);
// ...

if($method == "POST")
{
    echo "curl --request 'POST' '{$url}' --data '{$fields_string}' --header '{$auth_str}' --verbose";
} else
{
    echo "curl --get '{$url}' --data '{$fields_string}' --header '{$auth_str}' --verbose";
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url."?".$fields_string);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$content = curl_exec($ch);

您应该在两个不同的部分中分离
GET/POST
,类似于命令行示例

$ch = curl_init();
if($method == "POST"){
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
}
else{
    curl_setopt($ch, CURLOPT_URL, $url."?".$fields_string);
}
// remove CURLOPT_CUSTOMREQUEST

// rest of the curl opts go here!

我没有让这个特定的脚本工作,但我发现,这是一个非常有用的PHP库,使我的生活变得更加轻松