I can not create zip in Debian

0

I can not create a zip in Debian even with the folder with 777 permission, and the worst is that it does not return any error.

Code that I use to create the zip:

    function Compress($source_path, $chave)
    {
        // Normaliza o caminho do diretório a ser compactado
        $source_path = realpath($source_path);

        // Caminho com nome completo do arquivo compactado
        // Nesse exemplo, será criado no mesmo diretório de onde está executando o script
        $zip_file = DIR_ARQUIVOS.$chave.'.zip';

        // Inicializa o objeto ZipArchive
        $zip = new ZipArchive();
        $zip->open($zip_file, ZipArchive::CREATE | ZipArchive::OVERWRITE);

        // Iterador de diretório recursivo
        $files = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($source_path),
            RecursiveIteratorIterator::LEAVES_ONLY
        );

        foreach ($files as $name => $file) {
            // Pula os diretórios. O motivo é que serão inclusos automaticamente
            if (!$file->isDir()) {
                // Obtém o caminho normalizado da iteração corrente
                $file_path = $file->getRealPath();

                // Obtém o caminho relativo do mesmo.
                $relative_path = substr($file_path, strlen($source_path) + 1);

                // Adiciona-o ao objeto para compressão
                $zip->addFile($file_path, $relative_path);
            }
        }

        // Fecha o objeto. Necessário para gerar o arquivo zip final.
        $zip->close();

        // Retorna o caminho completo do arquivo gerado
        return $zip_file;
    }
    
asked by anonymous 28.03.2017 / 15:22

1 answer

0

I made a small adjustments to get the directory and it worked normally its code, unless its variable is empty or with a wrong path that is saving the file in a different folder than you wait

I created the zip.php file

<?php
function Compress($source_path, $chave)
{
    // Normaliza o caminho do diretório a ser compactado
    $source_path = realpath($source_path);

    // Caminho com nome completo do arquivo compactado
    // Nesse exemplo, será criado no mesmo diretório de onde está executando o script
    //$zip_file = DIR_ARQUIVOS.$chave.'.zip';

    /**
     * essa foi a parte que ajustei, trocar sua CONSTANTE pelo caminho atual do arquivo
     */
    $zip_file = getcwd( )."/".$chave.'.zip';

    // Inicializa o objeto ZipArchive
    $zip = new ZipArchive();
    $zip->open($zip_file, ZipArchive::CREATE | ZipArchive::OVERWRITE);

    // Iterador de diretório recursivo
    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source_path),
        RecursiveIteratorIterator::LEAVES_ONLY
    );

    foreach ($files as $name => $file) {

        // Pula os diretórios. O motivo é que serão inclusos automaticamente
        if (!$file->isDir()) {
            // Obtém o caminho normalizado da iteração corrente
            $file_path = $file->getRealPath();
            // Obtém o caminho relativo do mesmo.
            $relative_path = substr($file_path, strlen($source_path) + 1);

            // Adiciona-o ao objeto para compressão
            $zip->addFile($file_path, $relative_path);
        }
    }
    // Fecha o objeto. Necessário para gerar o arquivo zip final.
    $zip->close();

    // Retorna o caminho completo do arquivo gerado
    return $zip_file;

}

In the test environment, I created a folder called test at the same level as the php file and I ran

Compress("teste", "asdfgh");

The result was the asdfgh.zip file at the same level as the php script with the files that were inside the

    
28.03.2017 / 22:02