Не удалось записать результат запроса в файл (с помощью curl)


Я пытаюсь получить файл с 3-d стороннего сервера, используя \Magento\Framework\HTTP\Адаптер\Curl в моей модели. Моя цель - записать этот файл в файл на моем сервере внутри magento. Дело в том, что запрос проходит успешно, я получаю ответ, но файл создается пустым (файл с нулевым байтом), и в нем ничего не записано. Вот пример моего кода:

/**
 * @var \Magento\Framework\Filesystem\Directory\Write
 * @var \Magento\Framework\HTTP\Adapter\Curl
 * @var string $destination
 * @var string $source
*/
$newFile = $this->_directory->getDriver()->fileOpen($destination, "wb");
$this->_curl->addOption(CURLOPT_FILE, $newFile);
$this->_curl->write(\Zend_Http_Client::GET, $source);
$result = $this->_curl->read();

В результате у меня есть полный ответ в $result, пустой файл в $destination. Достаточно разрешения, т. е. даже установка 777 в каталоге и текущем файле, результат не меняется.

drwxrwxrwx 3 501 www-data 102 Apr  5 08:56 .
drwxrwxrwx 3 501 www-data 102 Apr  5 08:10 ..
-rw-rw-rw- 1 501 www-data   0 Apr  5 08:59 file_temp.gz
Author: Siarhey Uchukhlebau, 2016-04-05

1 answers

Попробуйте получить файл с помощью Magento\Framework\HTTP\ZendClient вот так. ZendClientFactory создаст экземпляр класса Magento\Framework\HTTP\ZendClient:

/**
 * @var \Magento\Framework\HTTP\ZendClientFactory
 * @var string $url
 */
$client = $this->_httpClientFactory->create();
$client->setUri($url);
$client->setConfig(['maxredirects' => 0, 'timeout' => 30]);
$result = $client->request(\Zend_Http_Client::GET)->getBody();
 2
Author: Miroslav Petroff, 2017-05-11 12:12:06