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();