Hướng dẫn ziparchive not working php

I have this application that fetches the data from outlook mail from sendthisfile.com.

Now in my localhost machine when I test the application, the zipArchive works well and the file extracts to my respective localhost folder. Now when I tried to run it on my server, the zipArchive is not working well. There is no error on it. There is a filename on $zip->open($filename).

My question is why can't it extract on my server?

My code below:

$path = "my-folder/"; $zip = new ZipArchive; $resFile = $zip->open($filename);

if ($resFile === TRUE) {
    $zip->extractTo($path);
    $zip->close();
    echo "Woot successfully extract $filename to $path";
    echo "
"; } else { echo "Error opening the file $filename"; }

Can someone help me figured this out?

Hướng dẫn ziparchive not working php

asked Jul 15, 2021 at 15:49

6

You need to activate the ZIP PHP extension on the server config. If you have a cPanel access, check the config in PHP Selector.

Hướng dẫn ziparchive not working php

answered Jul 15, 2021 at 16:57

Suppose phpArchive has been enabled, and you have set a write permission to directory, it's likely to be path problem.

Try to use $_SERVER['DOCUMENT_ROOT'] and try to run this code.

$path = "my-folder/";
$zip = new ZipArchive;
$resFile = $zip->open($filename);

if ($resFile === true) {
    if ($zip->extractTo($_SERVER['DOCUMENT_ROOT'].'/'.$path) === false) {
        echo "Extract Failed!
"; } else{ echo "Woot successfully extract $filename to $path
"; } $zip->close(); } else{ echo "Error opening the file $filename"; }

answered Jul 16, 2021 at 5:21

Hướng dẫn ziparchive not working php

NcXNaVNcXNaV

1,5884 gold badges12 silver badges22 bronze badges

2

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged

.

Example #1 Create a Zip archive

$zip

= new ZipArchive();
$filename "./test112.zip";

if (

$zip->open($filenameZipArchive::CREATE)!==TRUE) {
    exit(
"cannot open <$filename>\n");
}
$zip->addFromString("testfilephp.txt" time(), "#1 This is a test string added as testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" time(), "#2 This is a test string added as testfilephp2.txt.\n");
$zip->addFile($thisdir "/too.php","/testfromfile.php");
echo 
"numfiles: " $zip->numFiles "\n";
echo 
"status:" $zip->status "\n";
$zip->close();
?>

Example #2 Dump the archive details and listing

$za = new ZipArchive();$za->open('test_with_comment.zip');
print_r($za);
var_dump($za);
echo 
"numFiles: " $za->numFiles "\n";
echo 
"status: " $za->status  "\n";
echo 
"statusSys: " $za->statusSys "\n";
echo 
"filename: " $za->filename "\n";
echo 
"comment: " $za->comment "\n";

for (

$i=0$i<$za->numFiles;$i++) {
    echo 
"index: $i\n";
    
print_r($za->statIndex($i));
}
echo 
"numFile:" $za->numFiles "\n";
?>

Example #3 Zip stream wrapper, read an OpenOffice meta info

$reader = new XMLReader();$reader->open('zip://' dirname(__FILE__) . '/test.odt#meta.xml');
$odt_meta = array();
while (
$reader->read()) {
    if (
$reader->nodeType == XMLREADER::ELEMENT) {
        
$elm $reader->name;
    } else {
        if (
$reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {
            break;
        }
        if (!
trim($reader->value)) {
            continue;
        }
        
$odt_meta[$elm] = $reader->value;
    }
}
print_r($odt_meta);
?>

This example uses the old API (PHP 4), it opens a ZIP file archive, reads each file in the archive and prints out its contents. The test2.zip archive used in this example is one of the test archives in the ZZIPlib source distribution.

Example #4 Zip Usage Example

$zip

zip_open("/tmp/test2.zip");

if (

$zip) {
    while (
$zip_entry zip_read($zip)) {
        echo 
"Name:               " zip_entry_name($zip_entry) . "\n";
        echo 
"Actual Filesize:    " zip_entry_filesize($zip_entry) . "\n";
        echo 
"Compressed Size:    " zip_entry_compressedsize($zip_entry) . "\n";
        echo 
"Compression Method: " zip_entry_compressionmethod($zip_entry) . "\n";

        if (

zip_entry_open($zip$zip_entry"r")) {
            echo 
"File Contents:\n";
            
$buf zip_entry_read($zip_entryzip_entry_filesize($zip_entry));
            echo 
"$buf\n";zip_entry_close($zip_entry);
        }
        echo 
"\n";

    }

zip_close($zip);

}

?>

info at peterhofer dot ch

14 years ago

All these examples will not work if the php script has no write access within the folder.

Although you may say this is obvious, I found that in this case, $zip->open("name", ZIPARCHIVE::CREATE) doesn't return an error as it might not try to access the file system but rather allocates memory.

It is only $zip->close() that returns the error. This might cause you seeking at the wrong end.

webmaster @ anonymous

9 years ago

you can use this code for reading JAR files (java archives)

JAR files use the same ZIP format, so can be easily read

$zf = zip_open(realpath('D:/lucene/allinone/lucene-core.jar')); $i=1;
while($zf && $ze = zip_read($zf)) {
    $zi[$i]['zip entry name']= zip_entry_name($ze);
    $zi[$i]['zip entry filesize']= zip_entry_filesize($ze);
    $zi[$i]['zip entry compressed size']= zip_entry_compressedsize($ze);
    $zi[$i]['zip entry compression method']= zip_entry_compressionmethod($ze);
    $zi[$i]['zip entry open status'] = zip_entry_open($zf,$ze);
    //$zi[$i]['zip entry file contents'] = zip_entry_read($ze,100);
    $i++;
}
print_r($zi);
zip_close($zf);

geandjay at gmail dot com

14 years ago

        $zip = new ZipArchive;
   
$zip->open('teste.zip');
   
$zip->extractTo('./');
   
$zip->close();
        echo
"Ok!";
?>

Stefano Di Paolo

13 years ago

1) If you want to add files to a ZIP archive but you don't know if the ZiP file exists or not, you MUST check: this changes the way you open it !.
2) you can not append multiple flags, can use only one (or none).

If the zip does not exists, open it with:
$ziph->open($archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE)
(or a different compression method)

If the zip already exists, open it with:
$ziph->open($archiveFile)
or
$ziph->open($archiveFile, ZIPARCHIVE::CHECKCONS)

Example: make backup files every hour and ZIP them all in a daily ZIP archive, so you want to get only one ZIP per day, each ZIP containing 24 files:
  function archivebackup($archiveFile, $file, &$errMsg)
  {
   
$ziph = new ZipArchive();
    if(
file_exists($archiveFile))
    {
      if(
$ziph->open($archiveFile, ZIPARCHIVE::CHECKCONS) !== TRUE)
      {
       
$errMsg = "Unable to Open $archiveFile";
        return
1;
      }
    }
    else
    {
      if(
$ziph->open($archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE) !== TRUE)
      {
       
$errMsg = "Could not Create $archiveFile";
        return
1;
      }
    }
    if(!
$ziph->addFile($file))
    {
     
$errMsg = "error archiving $file in $archiveFile";
      return
2;
    }
   
$ziph->close();

        return

0;
  }
?>

Jonathan

12 years ago

If you find your zip file not being created make sure every file you are adding to the zip is valid.  If even one file is not available when zip->close is called then the archive will fail and your zip file won't be created.