2016-04-25 8 views
0

beschädigt Ich habe PHP Office in einer Laravel-Anwendung integriert. Es funktioniert, wenn ich es auf meinem XAMPP-localhost ausführe, aber wenn ich es auf dem IIS-Produktionsserver verwende, bekomme ich "Es tut uns leid, wir können text.docx nicht öffnen, weil wir ein Problem mit seinem Inhalt gefunden haben. Die Datei ist beschädigt und kann nicht geöffnet werden. " Ich kann durch zwei weitere Fehler Pop-ups klicken, die mich über "unlesbaren Inhalt" warnen und dann die Datei öffnen. Die Datei sieht gut aus, wenn ich sie endlich öffnen kann. Der IIS-Server verwendet PHP-Version 5.6.14, libxml2 Version 2.9.2 mit XML-Reader & Writer aktiviert und Zend Extension 220131226. Hier ist der störende Code, zog ich die Abschnitte aus und immer noch den gleichen Fehler, damit ich weiß, es ist nicht meine String Formatierung. Ebenfalls relevant ist, dass auf beiden Servern das Dokument im "Read Mode" statt "Print Layout" geöffnet wird. Ich würde es lieber in Print Layout öffnen.PHPWord-Datei ist auf IIS Server

$phpWord = new \PhpOffice\PhpWord\PhpWord(); 
$phpWord->getCompatibility()->setOoxmlVersion(15);  

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007'); 
header("Content-Description: File Transfer"); 
header('Content-Disposition: attachment; filename="' . $client->last_name . '.docx"'); 
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); 
header('Content-Transfer-Encoding: binary'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Expires: 0'); 
$objWriter->save("php://output"); 

Antwort

0

Wenn der Code auf XAMPP funktioniert, würde ich nicht über den Code sorgen. Versuchen Sie, der Umgebung und so viel wie möglich zu entsprechen. Das Ausführen von PHP unter IIS ist nicht dasselbe wie in einer Linux-Umgebung.