Вызов неопределенного метода ZipArchive :: setEncryptionName () в AWS Elastic Beanstalk PHP 7.2.17 с включенным zip-модулем - PullRequest
0 голосов
/ 20 мая 2019

Я запускаю экземпляр на установке 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');
        }
    }
}
...