Как заставить cURL выдавать результат, а не выводить на экран?
Уф. Попробовал предложенную функцию - работает. Пробую свою - не работает. Пол ночи думал, в чем тут дело и так и этак крутил, вроде все одинаково.
Не знаю, что это за магия, но оказалось, что вот так работает:CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
в обратном порядке нет:CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
Порядок других опций, вроде роли не играет. Что за магия такая не понятно. Притом, как я писал вначале на одном сервере и так и этак работает, а на другом вот такая штука.
В итоге рабочая версия установки опций выглядит так:private function setOptions(){
        if(empty($this->options))
        {
            $this->options = array(
                    CURLOPT_AUTOREFERER => true,
                    CURLOPT_COOKIESESSION => false,
                    CURLOPT_HTTPGET => true,
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_BINARYTRANSFER => true,
                    CURLOPT_ENCODING => 'gzip,deflate,sdch',
                    CURLOPT_HTTPHEADER => array(
                            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                            'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3',
                            'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
                            'Cache-Control: max-age=0'
                    ),
                    CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7'
            );
            
            if($this->cookie){
                $this->options[CURLOPT_COOKIEFILE] = "cookie.txt";
                $this->options[CURLOPT_COOKIEJAR] = "cookie.txt";
            }
        }    
    }
Может кто-нибудь обьяснит в чем тут фишка?
Мой маленький хелпер :-) function sendRequest($url, $fields = [], $method = 'get', $config = []) {
        $fields = http_build_query($fields);

        // http://php.net/manual/ru/function.curl-setopt.php
        $_config = [
            CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',
            CURLOPT_COOKIEFILE => 'cookie.txt',
            CURLOPT_COOKIEJAR => 'cookie.txt',
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HEADER => '',
            CURLOPT_TIMEOUT => 30,
            CURLOPT_AUTOREFERER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
        ];

        if ($method == 'post') {
            $_config[CURLOPT_POSTFIELDS] = $fields;
            $_config[CURLOPT_POST] = true;
        }

        foreach ($config as $key => $value) {
            $_config[$key] = $value;
        }

        $curl = curl_init();
        curl_setopt_array($curl, $_config);

        $response = curl_exec($curl);
        curl_close($curl);

        return $response;
    }