Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 021 117 раз!

Форум

Добро пожаловать, Гость!

Curl включен, но не работает

Обсуждение проблем в работе программного комплекса
Megatron13
Сообщения: 1
C нами: 2 года 1 мес

Непрочитанное сообщение Megatron13 » 12 окт 2014, 04:48

Всем привет. У меня такая проблема. Вот код который я пытался запустить.
<?php
$curl = curl_init();
   
   curl_setopt($curl, CURLOPT_URL, 'https://bittrex.com/api/v1.1/public/getmarkets');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
 
   curl_setopt($curl, CURLOPT_HEADER, 0);
   curl_setopt($curl, CURLOPT_VERBOSE, true);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
   print_r(curl_getinfo($curl));
   
   $out = curl_exec($curl);
    echo $out;
   $error = curl_error($curl);
   
    curl_close($curl);
?>

Он возвращает только curl_getinfo($curl). Сам ответ от api он не возвращает.
curl включен, т.к. например вот такой код

<?php
if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, 'http://test.lc/primer.php?a=5&b=10');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
  }
?>


primer.php:
<?php
  $a = $_GET['a'];
  $b = $_GET['b'];
  echo $a + $b;
?>


Работает и выдает в ответе 15.

В php.ini тоже написано, что curl включен.
Пробовал еще сделать тоже самое через консоль, в итоге получил ошибку, что curl_init() не определен.
Пробовал сделать через консоль, но с прямым указанием какой php.ini использовать - получил кучу ошибок о том, что модули (вроде того же curl) не найдены.
Кстати таких ошибок я не видел даже при
error_reporting = E_ALL & ~E_NOTICE
display_errors = On

Далее пробовал на сервисе http://www.compileonline.com/execute_php_online.php
и там все работает.

Значит проблема в сервере. Я никаких настроек не менял, специально поставил самую новую версию (на старой, 2012 года тоже не работало).
Так в чем проблема? Баг?

Аватара пользователя
Максим
Сообщения: 4877
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 12 окт 2014, 11:22

Так в чем проблема? Баг?


Да, у вас баг, не понимаете код, с которым работаете. У вас стоит curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); хотя нет никакого сертификата чтобы отправить серверу. Знаете что делает эта опция?

Поставьте curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); и всё будет работать. Либо установите cacert.pem, в Windows версии PHP его нет, поэтому и не работает (cacert.pem положить в папку со скриптом):

curl_setopt($curl, CURLOPT_CAINFO,  realpath('cacert.pem')); 


Вернуться в «Ошибки Open Server»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей