Страница 1 из 1

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

Добавлено: 12 окт 2014, 04:48
Megatron13
Всем привет. У меня такая проблема. Вот код который я пытался запустить.
<?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 года тоже не работало).
Так в чем проблема? Баг?

Добавлено: 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'));