php / PharDataを介して(バックアップ目的で)サーバーコンテンツ全体を圧縮しています:
$phar = new PharData(SYS_ROOT.'/project.zip');
$phar->buildFromDirectory(SYS_ROOT.'/');
SYS_ROOT は、Web ルート (この場合は . ドット) へのパスを定義する定数です。結果のzipに空のフォルダーがないことを除いて、すべて正常に機能します。フォルダが必要です。
私は Phar::addEmptyDir について考えましたが、どのフォルダーが空であるかを判断するには、フォルダーをもう一度繰り返す必要があります。recursivedirectoryiterator を無駄にしようとしました(空のフォルダーもスキップしました):(