PHPでシンボリックリンクを含む圧縮ファイルを解凍したい
Mac OSX上でPHP 5.6.2を使っています。
以下のディレクトリ構成をzip -ry
して圧縮ファイルを作成しました。
このファイルをunzipコマンドで解凍すると、シンボリックリンクを正しく抽出できるのですが、PHPのZipArchiveクラスを使って解凍すると、ただのファイルになってしまいます。
PHPを使って、シンボリックリンクを正しく解凍するよい方法はないでしょうか?
なお、圧縮ファイルの種類や、PHPのライブラリの種類は問いません。
圧縮ファイルの作成
シンボリックリンクを含んでいます。
$ tree samples
samples
├── symlinks
│ ├── text1.txt -> ../text1.txt
│ └── text2.txt -> ../text2.txt
├── text1.txt
└── text2.txt
$ zip -ry samples.zip samples
unzipで解凍
シンボリックリンクを正しく解凍できています。
$ unzip samples.zip -d tmp
$ tree tmp
tmp
└── samples
├── symlinks
│ ├── text1.txt -> ../text1.txt
│ └── text2.txt -> ../text2.txt
├── text1.txt
└── text2.txt
PHPで解凍
シンボリックリンクがただのファイルになってしまいました。
$ php unzip.php
$ tree tmp
tmp
└── samples
├── symlinks
│ ├── text1.txt
│ └── text2.txt
├── text1.txt
└── text2.txt
PHPの解凍用プログラム
<?php // unzip.php
$zip = new ZipArchive;
$zip->open("samples.zip");
$zip->extractTo("tmp");
$zip->close();