みなさん、こんにちは。どんぶラッコです。
PHPで作ったシステムにWordファイルを適用させたい…そんな時に使うのがPHPWordだと思います。
私も自社のプロジェクトのエクスポート機能を作る際に、PHPWordを利用しています。
しかし、Laravelで組み込んだ際に、いくつかのエラーが発生して「?」となったことがありました。
そこで、今回は私が遭遇したエラー2点とその解決方法を記載していきたいと思います!
No such file or directory
ZipArchive::close(): Failure to create temporary file: No such file or directory
今回は、wordで書き出す際に /storage
配下に一時ファイルを書き出すように設定していたのですが、そこでエラーが発生してしまっていました。
ということで、storageのパーミッションを変更してあげましょう。
各種設定については人によって設定方法は様々だと思うのでここでは割愛します。
初期に storage
を構築する際に設定をしているはずなので、その手順にしたがって再度設定をしてください。
ファイルを開こうとして、エラーが発生しました
もう一つ、ハマったエラーは、適切にダウンロードできるものの、ファイルを開こうしてこんなエラーが表示されてしまうケースです。
私の場合、厄介なことにこのようにファイルが壊れてしまうケースとそうでないケースが存在しました。
結論から言うと、エクスポート指定していた文章に特殊記号が含まれていたことが原因でした。
$PHPWord = new PHPWord();
$section = $PHPWord->createSection();
$section->addText($EXPORT_TEXT);
// $EXPORT_TEXT ←ここに特殊文字が含まれてしまっていた!!
ということで、$EXPORT_TEXT
を htmlspecialchars()
で囲ってあげることで解決しました。
$PHPWord = new PHPWord();
$section = $PHPWord->createSection();
// 変更
$section->addText(htmlspecialchars($EXPORT_TEXT, ENT_QUOTES, "UTF-8"));
cf. ) こちらの質問者様の場合は文字コードが異なっていたようです。解決方法は一緒です
—
悩んでいる方の解決になれば幸いです!