Доменные имена в зоне .рф и php curl

Рейтинг: 0Ответов: 2Опубликовано: 27.02.2015

Тут столкнулся с проблемой что curl в php работает по разному в CLI и в Web-сервере с именами в зоне .рф.

Так скрипт:

<?php

class Main {
    /**
     * @var array Полученные заголовки
     */
    private $in_header;

    /**
     * @var string Полученный контент
     */
    private $in_body;

    public function __construct ($url) {
        $curl = curl_init($url);
        if ($curl === FALSE) {
            throw new Exception("curl_init($url) - error");
        }

        $opts = array(
            CURLOPT_RETURNTRANSFER => FALSE,
            CURLOPT_HEADERFUNCTION => function ($curl, $header) {
                $this->in_header[] = $header;
                return strlen($header);
            },
            CURLOPT_WRITEFUNCTION  => function ($curl, $body) {
                $this->in_body .= $body;
                return strlen($body);
            }
        );
        if (curl_setopt_array($curl, $opts) === FALSE) {
            throw new Exception("curl_setopt_array() - error: " . curl_error($curl));
        }
        if (curl_exec($curl) === FALSE) {
            throw new Exception("curl_exec() - error: ". curl_error($curl));
        }
        curl_close($curl);
        var_dump($this->in_header);
        echo strlen($this->in_body), PHP_EOL;
    }
}

try {
    echo "PHP: ", phpversion(), PHP_EOL;
    $curl = curl_version();
    echo "cURL: ", $curl['version'], PHP_EOL;

    new Main('http://кто.рф/');
    # new Main('http://ya.ru/');
}
catch (Exception $e) {
    echo "$e";
}

Нормально отрабатывает из командной строки, и падает с ошибкой Could not resolve host: кто.рф в броузере

Проверено на ubuntu 14.04. Пробывал как nginx+php-fpm так и apache+mod_php.

Причем если использовать http://ya.ru/ в качестве URL поведение Web и CLI одинаковое

Ответы

Ответов пока нет.