PHP ZipArchive не работает в Laravel

PHP ZipArchive работает отлично, если я запускаю его в сыром php, но получаю ошибку "class not found", когда я пытаюсь запустить его в моем проекте Laravel:

FatalErrorException в строке WidgetController.php 40: класс 'App\Http\Controllers\ZipArchive' не найден

Вот функция, которая есть у меня в контроллере Laravel:

public function installHello()
{
    $file_path = base_path("resources/assets/packages/helloworld.zip");

    $zip = new ZipArchive;
    if ($zip->open($file_path) === TRUE) {
        $zip->extractTo(base_path('packages/tkabir/'));
        $zip->close();
        return redirect()->back();
        //echo 'ok';
    } else {
        echo 'failed';
    }
}

И вот пример, который я попробовал в файле index.php:

<?php
$zip = new ZipArchive;
if ($zip->open('E:/xampp/htdocs/ziptest/helloworld.zip') === TRUE) {
    $zip->extractTo('E:/xampp/htdocs/ziptest/');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

Есть идеи, почему это не сработает в Laravel?

3 ответа

Задача решена. Совершил очевидную ошибку: забыл "использовать ZipArchive" в моем контроллере Laravel

Добавлять use ZipArchive; в вашем контроллере это работает для меня.

В composer.json добавьте строку:

      "require": {
  [...]     
  "ext-zip": "*"  /* this line */ 
},

Выполнять:

      composer update

На вашем контроллере используйте эти строки:

      use ZipArchive;
[...]

// use this form to instance the object 
$zip = new \ZipArchive();

    
    
Другие вопросы по тегам