PHPExcel_Writer_Exception with message "Could not close zip file php://output."
Thanks to Mark Baker. His answer has solved the problem. I have written a simple helper method using his approach.
static function SaveViaTempFile($objWriter){
$filePath = sys_get_temp_dir() . "/" . rand(0, getrandmax()) . rand(0, getrandmax()) . ".tmp";
$objWriter->save($filePath);
readfile($filePath);
unlink($filePath);
}
And I have just replaced $objWriter->save('php://output')
with SaveViaTempFile($objWriter)
The most common cause of this error when saving to php://output is an open_basedir restriction that doesn't include a valid system's temp folder (e.g. /tmp
), or permissions for the system's temp folder... suhosin can also affect this, even when the obvious permissions appear to be set correctly.
A possible workround is to write the file to the filesystem in a directory that you know you do have full privileges to write, and then use readfile() to stream that file to php://output before deleting the file