◆当ページにはプロモーションが含まれています

Laravel

PHPWordを使ってエラー … その対処法 【Laravelで実装してみたよ】

みなさん、こんにちは。どんぶラッコです。

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 配下に一時ファイルを書き出すように設定していたのですが、そこでエラーが発生してしまっていました。

グランくん
グランくん
新規ディレクトリを作成したので、git pullした時に適切な権限が付与されていなくて、結果エラーになってしまっていました

ということで、storageのパーミッションを変更してあげましょう。

各種設定については人によって設定方法は様々だと思うのでここでは割愛します。

初期に storage を構築する際に設定をしているはずなので、その手順にしたがって再度設定をしてください。

どんぶラッコ
どんぶラッコ
こんな感じでユーザを作成している人が多いかな?

ファイルを開こうとして、エラーが発生しました

もう一つ、ハマったエラーは、適切にダウンロードできるものの、ファイルを開こうしてこんなエラーが表示されてしまうケースです。

私の場合、厄介なことにこのようにファイルが壊れてしまうケースとそうでないケースが存在しました。

結論から言うと、エクスポート指定していた文章に特殊記号が含まれていたことが原因でした。

$PHPWord = new PHPWord();
$section = $PHPWord->createSection();
$section->addText($EXPORT_TEXT);
// $EXPORT_TEXT ←ここに特殊文字が含まれてしまっていた!!

ということで、$EXPORT_TEXThtmlspecialchars() で囲ってあげることで解決しました。

$PHPWord = new PHPWord();
$section = $PHPWord->createSection();
// 変更
$section->addText(htmlspecialchars($EXPORT_TEXT, ENT_QUOTES, "UTF-8"));

cf. ) こちらの質問者様の場合は文字コードが異なっていたようです。解決方法は一緒です

悩んでいる方の解決になれば幸いです!

エンジニアにおすすめ転職サイト

マイナビIT AGENT
迷ったらまずはココ。求人数が多いため希望や条件にマッチする求人が見つかる!

レバテックキャリア
担当者のレベルが高い。エンジニア特化で15年の実績がある実績で初回提案での内定率驚異の90%!

JOIN
副業やフリーランスとして高額報酬案件を見つけるならJOIN。未経験者でも案件獲得実績豊富が強み!

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
一緒によく読まれている記事

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です