PHPExcel_Writer_Exception com a mensagem "Não foi possível fechar o arquivo zip php: // output".

Estou usando o PHPExcel para exportar alguns dados para o usuário em um arquivo do Excel. Gostaria que o script enviasse o arquivo do Excel para o usuário imediatamente após sua criação. Aqui está o meu código de teste:

try{

  /* Some test data */
  $data = array(
    array(1, 10   , 2             ,),
    array(3, 'qqq', 'some string' ,),
  );

  $objPHPExcel = new PHPExcel();
  $objPHPExcel->setActiveSheetIndex(0);

  /* Fill the excel sheet with the data */
  $rowI = 0;
  foreach($data as $row){
    $colI = 0;
    foreach($row as $v){
      $colChar = PHPExcel_Cell::stringFromColumnIndex($colI++);
      $cellId = $colChar.($rowI+1);
      $objPHPExcel->getActiveSheet()->SetCellValue($cellId, $v);
    }
    $rowI++;
  }

  header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  header('Content-Disposition: attachment;filename="export.xlsx"');
  header('Cache-Control: max-age=0');

  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  $objWriter->save('php://output');

}catch(Exception $e){
  echo $e->__toString();
}

No meu servidor local(Windows 7 x64, Php 5.3.8, Apache 2.2.21) Eu recebo um arquivo xlsx válido. Não há erros. Mas há um problema no servidor ao vivo(Linux 2.6.32-5-amd64, PHP 5.3.3-7+squeeze13, Apache 2.2.16). O script permite que o navegador baixe o arquivo "export.xlsx" com esse conteúdo:

exception 'PHPExcel_Writer_Exception' with message 'Could not close zip file php://output.' in /var/www/someuser/data/www/somedomain.com/libs/PHPExcel/Writer/Excel2007.php:348
Stack trace:
#0 /var/www/someuser/data/www/somedomain.com/classes/Report/Leads/Export.php(339): PHPExcel_Writer_Excel2007->save('php://output')
#1 /var/www/someuser/data/www/somedomain.com/application/pages/account/controllers/TestController.php(13): Report_Leads_Export->Test()
#2 /var/www/someuser/data/www/somedomain.com/libs/Zend/Controller/Action.php(516): Account_TestController->indexAction()
#3 /var/www/someuser/data/www/somedomain.com/libs/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
#4 /var/www/someuser/data/www/somedomain.com/libs/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#5 /var/www/someuser/data/www/somedomain.com/index.php(511): Zend_Controller_Front->dispatch()
#6 {main}

O PHP NÃO está sendo executado no modo de segurança. A opção "open_basedir" está vazia (está comentada).

Eu encontrei esse código nos arquivos PHPExcel:

if ($objZip->close() === false) {
    throw new PHPExcel_Writer_Exception("Could not close zip file $pFilename.");
}

Então, a razão do problema é que$objZip->close() === false Onde$objZip é uma instância deZipArchive classe.

Qual é a razão do problema e como posso resolvê-lo? Obrigado.

questionAnswers(9)

yourAnswerToTheQuestion