![](/img/trans.png)
[英]cURL PHP not working if CURLOPT_RETURNTRANSFER set true
[英]CURLOPT_RETURNTRANSFER on working on localhost but not working on live server in php
$user_access ='example';
$user_key = 'examplekey';
$payload = json_encode($arr);
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'example.com/api/users/2');
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($payload)));
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $payload );
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERPWD, $user_access . ":" . $user_key);
if (curl_exec($curl_handle) === FALSE) {
die("Curl Failed: " . curl_error($curl_handle));
} else {
return curl_exec($curl_handle);
};
当我删除curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
然后它可以在本地和实时服务器上运行。 我不需要自动返回 curl_exec 值,因此我使用curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
我无法确定问题。 请帮我
如果您检查了您在本地和您的实时服务器上使用了可能的环境(例如 PHP 版本、 curl_exec
在实时服务器上未被阻止,对于某些主机来说就是这种情况),那么很可能是远程服务器(API-服务器)实际上是不同的反应。 这可能是它具有基于 IP 地址或其他事物的访问级别。
一般考虑:
curl_exec()
两次:首先检查它的返回是否为FALSE
,然后再次检查是否返回。 而是将返回值存储在变量中curl_setopt($curl_handle, CURLOPT_VERBOSE, true);
以便您获得有关潜在错误的更多信息$httpClient = new GuzzleHttp\Client();
$response = $client->request('PUT', 'https://example.com/api/users/2', [
'auth' => [$user_access, $user_pass],
'json' => $arr
]);
return $response->getBody();
将为您处理一切。
您应该像下面这样比较和处理;
$Result = curl_exec($curl_handle);
if($Result === false)die("Curl Failed: " . curl_error($curl_handle)); // Just an error display interceptor
return $Result; // Always return the appropriate response
在您的代码中可以肯定的是,您正试图将其包装在 function 中,并且此 function 应该总是返回一些东西。 在这里,无论 cURL 成功还是失败,我们都会返回 $Result,您需要与调用者进行明确的检查,以查看您的 cURL 方法是否有效($cURLFunctionReturnValue === false)和类似的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.