Вы должны изменить строку
curl_setopt($ch, CURLOPT_FAILONERROR, true);
... для ...
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
CURLOPT_FAILONERROR
вызовет «тихий сбой» - что, как вы говорите, не то, что вы хотите. Я заменил это на CURLOPT_FOLLOWLOCATION
, потому что, когда я посещаю второй URL-адрес, меня перенаправляют на страницу типа «выберите свою страну», которая будет ответом с пустым телом - именно поэтому вы получаете пустой файл. 1009 *
Нет проблем с вашим кодом как таковым, просто проблема с тем, как вы обрабатываете ответ со второго URL. Вы не видите ошибки, потому что технически ее не было.