为什么 ZipArchive setEncryptionName 不起作用?

Why is ZipArchive setEncryptionName not working?

我有 PHP v7.3 并且我 运行 以下 PHP 代码,试图创建一个受密码保护的 ZIP -文件。

ZIP 文件已创建,但未受密码保护。有什么问题吗?

    $zip = new ZipArchive();
    $zipFile = $this->backupDir . '/' . $db_file_name . '_' . $this->backupFormat . '.sql.zip ';
    if (file_exists($zipFile)) { unlink($zipFile); }
    
    $zip->open($zipFile, ZipArchive::CREATE);
    $password = 'top-secret';
    $zip->setPassword($password);
    $fileName = $this->backupDir . '/' . $db_file_name . '.sql';
    $baseName = basename($fileName);
    $zip->addFile($fileName, $baseName);
    $zip->setEncryptionName($fileName, ZipArchive::EM_AES_256);
    $zip->close();

我没有收到任何错误。只是他生成的 ZIP 文件没有保护。

签出 phpinfo 时,您会看到使用了 libzip 版本。这必须增加到版本 1.2.0 或更高版本。