Я запускаю экземпляр на установке AWS с Elastic Beanstalk (это приложение Laravel 5.8, работающее на PHP 7.2 и работающее на 64-битной конфигурации Amazon Linux / 2.8.9).
Когда я запускаю SSH в экземпляр и запускаю собственную команду ремесленника с помощью модуля ZipArchive, возникает следующая ошибка:
Symfony\Component\Debug\Exception\FatalThrowableError : Call to undefined method ZipArchive::setEncryptionName()
Если я проверю версию PHP, вызвав php -v
, появится следующее сообщение:
PHP 7.2.17 (cli) (built: Apr 15 2019 23:21:08) ( NTS )
Поскольку ZipArchive::setEncryptionName()
должно быть доступно из PHP> = 7.2.0, я не понимаю, почему возникает эта ошибка.
Также, если я проверяю включенные модули PHP, вызывая php -m
, модуль zip
находится в списке модулей.
Может кто-нибудь помочь мне разобраться, как решить эту ошибку?
Заранее спасибо.
Строки кода, в которых возникает ошибка:
$zip_file = storage_path('app\export-' . Carbon::now()->format('d-m-Y-H-i') . '.zip');
$zip = new ZipArchive;
if ($zip->open($zip_file, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
$this->info("adding files");
if (!$zip->addFile(storage_path('app/export.xlsx'), 'export.xlsx')) {
Mail::to('xxx')->send(new ExportFailed('Could not add export.xlsx to zip'));
$this->error('Could not add export.xlsx to zip');
} else {
if(!$zip->setEncryptionName('export.xlsx', ZipArchive::EM_AES_256)){
Mail::to('xxx')->send(new ExportFailed('Could not set encryption for export.xlsx in zip'));
$this->error('Could not set encryption for export.xlsx in zip');
}
}
}