PHP curl не работает, но терминал curl работает

1

Я пытаюсь сделать запрос PUT API. Запрос успешно, если я делаю следующее в терминале:

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

Этот завиток работает отлично, но когда я пытаюсь сделать это с помощью 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",

Не устранить проблему. Почему это будет работать в терминале, но не на PHP, если параметры одинаковы? Что отсутствует в PHP, который вызывает ошибку? Заранее спасибо!

UPDATE На основе ответа Mikel я изменил URL-адрес 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, к параметрам curl в PHP-коде. После попытки, что я все еще получаю ошибку SSL Connect Error

Теги:
curl

1 ответ

3

Похоже, что API, с которым вы пытаетесь подключиться, не разрешает защищенные подключения. Пример вашего терминала подключается только к http://, в то время как ваш php-код пытается подключиться к https://. Попробуйте изменить URL-адрес API на вашем PHP только на http://.

EDIT: Кроме того, похоже, что вы новичок в SO! Добро пожаловать! Пожалуйста, помните, чтобы голосовать за вас, D

  • 0
    Интересно. Я пробовал http в PHP, и он все еще не работал раньше. Я попробую еще раз, чтобы увидеть результаты. Я отправлю ответ через мгновение. Спасибо за теплый прием!
  • 0
    Я добавил обновление в пост на основе ваших предложений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню