Захват CSV над cURL в PHP

К сожалению, я не могу использовать fopen или file_get_contents, поэтому мой рабочий скрипт стал сломанным, используя cURL:

$ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $tmp = curl_exec($ch); curl_close($ch); header("Content-type: application/csv"); header(Content-Disposition: attachment; filename=$start.csv"); header("Pragma: no-cache"); header("Expires: 0"); echo $tmp; 

Входящий URL – это CSV-файл, и версия fopen этого работала раньше. Все, что я получаю, это пустой CSV-файл, который возвращается в браузер.

Благодарю.

Хорошо, может быть несколько мест, которые поступили не так, скорее всего, переменная $ tmp станет вашим ключом.

Я предполагаю, что переменные $ url и $ start объявлены правильно

Первое, что я хотел бы предложить, это сделать что-то вроде:

  if( ! $tmp = curl_exec($ch)) { echo curl_error($ch); } else { header("Content-type: application/csv"); header("Content-Disposition: attachment; filename=$start.csv"); header("Pragma: no-cache"); header("Expires: 0"); echo $tmp; } curl_close($ch); 

Можете дать вам представление о том, что происходит не так

По умолчанию curl_exec возвращает логическое значение. Вам нужно установить для параметра CURLOPT_RETURNTRANSFER значение 1 или true чтобы вернуть возвращаемую полезную нагрузку.

Установите CURLOPT_RETURNTRANSFER в 1, чтобы получить что-то в $ tmp, иначе curl_exec выводит csv напрямую (и перед отправкой заголовков). См. http://www.php.net/manual/en/function.curl-setopt.php

Я считаю, что curl_exec($ch) не вернет строку, если вы curl_setopt($ch,CURLOPT_RETURNTRANSFER,true) не используете curl_setopt($ch,CURLOPT_RETURNTRANSFER,true) .