1

I'm using PHPExcel to generate Excel files but it's not working. I have debugged down to this piece of code:

$objZip = new ZipArchive();

$ro = new ReflectionObject($objZip);
$zipOverWrite = $ro->getConstant('OVERWRITE');
$zipCreate = $ro->getConstant('CREATE');

// Try opening the ZIP file
// Debug result: both open() return true here
if ($objZip->open($pFilename, $zipOverWrite) !== true) {
    if ($objZip->open($pFilename, $zipCreate) !== true) {
        throw new PHPExcel_Writer_Exception("Could not open " . $pFilename . " for writing.");
    }
}

// Debug result: $objZip->close() would return true here

// Add [Content_Types].xml to ZIP file
// Debug result: it stops running on this line, no errors or exceptions
$objZip->addFromString('[Content_Types].xml', ...);

The line $objZip->addFromString() generates temp files in the directory, but it seems unable to write into these files somehow, as they are empty:

-rw-------. 1 www1 www1 0 Mar 27 15:21 test_output_20170327.xlsx.0BRqEn
-rw-------. 1 www1 www1 0 Mar 27 15:21 test_output_20170327.xlsx.3Hbl1n
-rw-------. 1 www1 www1 0 Mar 27 15:21 test_output_20170327.xlsx.5otErm
...

Presumably it's a permission issue, but the PHP user www1 has write permission in the directory and fwrite() works well on these temp files as I tried. PHP version is 5.4.16.

Any ideas please?

vicch
  • 696
  • 2
  • 6
  • 13
  • One possibility is that the `zip` command (or other underlying command for ZipArchive) is somehow disabled for the user. Checking with my system admin. – vicch Mar 28 '17 at 17:16

1 Answers1

0

Turned out to be a problem in PHP update. Resolved by restarting the web server.

vicch
  • 696
  • 2
  • 6
  • 13