-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DirectoryIterator error #43
Comments
This code works fine on the latest version of the library. Run this code for the test: <?php
// save to test-zip.php
require __DIR__ . '/vendor/autoload.php';
$ignoreFiles = [
'.git',
'vendor/',
'!backup/',
];
$directoryIterator = new \RecursiveDirectoryIterator(__DIR__);
$ignoreIterator = new \PhpZip\Util\Iterator\IgnoreFilesRecursiveFilterIterator(
$directoryIterator,
$ignoreFiles
);
$zipFile = new \PhpZip\ZipFile();
$zipFile
->addFilesFromIterator($ignoreIterator)
->saveAsFile(__DIR__ . '/test.zip')
->close()
; and run php test-zip.php P.S.: The best way to add files right now is Symfony Finder. <?php
require __DIR__ . '/vendor/autoload.php';
$directory = __DIR__;
$finder = (new \Symfony\Component\Finder\Finder())
->exclude('!backup')
->exclude('.git')
->exclude('vendor/')
->in($directory)
;
$zipFile = (new \PhpZip\ZipFile());
$zipFile->addFromFinder($finder);
$zipFile->saveAsFile('backup.zip');
$zipFile->close(); |
I'm sorry. I wrote the code wrong. I fixed it. I'm using your new method This mistake |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
$ignoreFiles = [
'!backup/'
];
$directoryIterator = new \DirectoryIterator(ROOT_PATH);
$ignoreIterator = new \PhpZip\Util\Iterator\IgnoreFilesRecursiveFilterIterator(
$directoryIterator,
$ignoreFiles
);
$zipFile
->addFilesFromIterator($ignoreIterator)
->saveAsFile($zippath)
->close();
[23-Jan-2020 16:52:51 PRC] PHP Fatal error: Uncaught TypeError: Argument 1 passed to PhpZip\Util\Iterator\IgnoreFilesRecursiveFilterIterator::__construct() must implement interface RecursiveIterator, instance of DirectoryIterator given, called in /home/wwwroot/xxx.com/admin/backup.php on line 34 and defined in /home/wwwroot/xxx.com/vendor/nelexa/zip/src/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php:26
Stack trace:
#0 /home/wwwroot/xxx.com/admin/backup.php(34): PhpZip\Util\Iterator\IgnoreFilesRecursiveFilterIterator->__construct(Object(DirectoryIterator), Array)
#1 /home/wwwroot/xxx.com/admin/restler.php(2): Backup->getSite()
#2 /home/wwwroot/xxx.com/admin/api.php(56): Restler->handle()
#3 {main}
thrown in /home/wwwroot/xxx.com/vendor/nelexa/zip/src/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php on line 26
The text was updated successfully, but these errors were encountered: