実現したいこと
ZipArchiveを使って、シンボリックリンクを貼ったstorageフォルダの中のテキストファイル(「file1.txt」と「file2.txt」)をzipに圧縮し、
storageフォルダの中に(ひとつのzipフォルダとして)格納したい。
zipフォルダの名前は何でもいいです。
しかし「Class 'ZipArchive' not found」というエラーが起きます。
- Laravelのバージョン:laravel/laravel (v6.20.0)
- PHP Version 7.4.12
(storageフォルダにphp artisan storage:linkでシンボリックリンクを貼りました。)
試したこと
ZipArchiveをインスタンス化した時点で「Class 'ZipArchive' not found」とエラーが起きます。
ZipArchiveをインストールしなければならないと思い、調べていると、PHPINFOのZIPの欄がEnableになっていないと
使えないということが分かりました。
自分の環境はちゃんと下記のようにEnableになっていました。
そうすると、使えるんじゃないかと思うのですが、なぜ使えないのでしょうか?
zip
Zip enabled
:
エラー内容
Class 'ZipArchive' not found
https://flareapp.io/share/LPlegea7
コントローラー
namespace App\Http\Controllers; use Illuminate\Http\Request; use ZipArchive; use Illuminate\Support\Facades\Storage; class TestController extends Controller { // public function index() { $url = Storage::url('file1.txt'); // dd($url); ←ちゃんと取れていました。 $logPath = storage_path('zip' . '123.zip'); $zip = new ZipArchive(); dd($zip); //←ここでエラーが起きています。 $zip->open($url, ZipArchive::CREATE); return view('index'); } }
ルーティング
<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ // Route::get('/', function () { // return view('welcome'); // }); Route::get('/','TestController@index');
参考にした資料
■PHPINFO ZIP
https://deep-blog.jp/engineer/14356/
■ZipArchiveの使用法
https://qiita.com/hiro_K1992/items/77fcbf27102bfc254e2b
■下記のサイトのようにバックスラッシュをつけてみましたが、同様のエラーが出ました。
https://teratail.com/questions/32085
$zip = new ZipArchive(); ↓ $zip = new \ZipArchive();
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。