PHP卷曲不起作用,但终端卷曲

时间:2015-11-04 18:34:18

标签: php curl

我正在尝试向API发出PUT请求。如果我在终端中执行以下操作,请求成功:

curl -H "Authorization: Bearer abc123" -X PUT -d "story[title]=Testing" "http://api.mavenlink.com/api/v1/stories/1.json"

这个curl工作得很好但是当我尝试使用PHP并使用以下代码时,它不起作用:

$curlOptions = array
        (
          CURLOPT_URL            => "https://api.mavenlink.com/api/v1/stories/1.json",
          CURLOPT_HTTPHEADER     => array('Authorization: Bearer abc123'),
          CURLOPT_RETURNTRANSFER => TRUE,
          CURLOPT_CUSTOMREQUEST => "PUT",
          CURLOPT_POSTFIELDS => "story[title]=Testing"
        );

        $curlHandle = curl_init();
        curl_setopt_array($curlHandle, $curlOptions);

        $content = curl_exec($curlHandle);

        if ($content === false) {
            print_r(curl_error($curlHandle));
        }

        print_r($content);

当我转到页面时打印的内容是错误SSL Connect Error。我四处搜索并尝试了多种卷曲选项:

CURLOPT_SSLVERSION => 3,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_CIPHER_LIST => "rsa_rc4_128_sha",

既不能解决问题。如果选项相同,为什么它在Terminal中工作但在PHP中不工作?导致错误的PHP缺少什么?提前谢谢!

更新 根据Mikel的回答,我将PHP网址改为http。这没有显示错误,但也没有成功。所以我做了一个curl_getinfo并执行以下操作:

Array ( [url] => https://api.mavenlink.com/api/v1/stories/1.json [content_type] => text/html [http_code] => 301 [header_size] => 237 [request_size] => 435 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 1 [total_time] => 0.216551 [namelookup_time] => 4.1E-5 [connect_time] => 0.043997 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => 0 [starttransfer_time] => 0 [redirect_time] => 0.21663 [certinfo] => Array ( ) [primary_ip] => 55.555.555.555 [redirect_url] => )

所以我将CURLOPT_FOLLOWLOCATION => true,添加到PHP代码中的curl选项中。尝试之后我仍然收到错误SSL Connect Error

1 个答案:

答案 0 :(得分:3)

您尝试连接的API看起来不允许安全连接。您的终端示例仅连接到http://,而您的php代码正在尝试连接到https://。尝试将PHP中的API的URL更改为http://。

编辑:此外,看起来你是SO的新手!欢迎!请记得在你去的时候投票; D