首页 > 解决方案 > CURLOPT_RETURNTRANSFER 在 localhost 上工作但不在 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);

我无法确定问题。请帮我

标签: phplaravelcodeignitercurl

解决方案


您应该像下面这样比较和处理;

$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

在您的代码中可以确定您正在尝试将其包装在一个函数中,并且该函数应该始终返回一些内容。在这里,无论 cURL 成功还是失败,我们都会返回 $Result,您需要与调用者进行显式检查,以查看您的 cURL 方法是否有效($cURLFunctionReturnValue === false)和类似的代码。


推荐阅读