PHPのZipArchiveで圧縮ファイルを解凍するとパーミッションが変わってしまう
Mac OSX上でPHP 5.6.2を使っています。
以下のようにzip
で圧縮ファイルを作成しました。
そのファイルをunzip
で解凍すると、パーミッションを正しく再現できるのですが、PHPのZipArchiveクラスを使って解凍すると、実行権限がなくなってしまいます。
PHPを使って、実行権限をを正しく解凍するよい方法はないでしょうか?
なお、圧縮ファイルの種類や、PHPのライブラリの種類は問いませんが、先日質問をさせていただいた、シンボリックリンクを含む圧縮ファイルが正しく解凍できる方法であることが前提になります。
先日の質問
PHPでシンボリックリンクを含む圧縮ファイルを解凍したい
圧縮ファイルの作成
command.shには実行権限が付いています。
$ ls -l
total 8
-rwxr-xr-x 1 foo bar 22 7 5 10:20 command.sh
$ zip ../command.zip *
adding: command.sh (stored 0%)
unzipで解凍
command.shの実行権限は付いたまま正しく解凍されます。
$ unzip command.zip -d tmp
Archive: command.zip
extracting: tmp/command.sh
$ ls -l tmp
total 8
-rwxr-xr-x 1 foo bar 22 7 5 10:20 command.sh
PHPのZipArchiveで解凍
command.shの実行権限が無くなってしまいます。
$ php unzip.php
$ ls -l tmp
total 8
-rw-r--r-- 1 foo bar 22 7 5 10:42 command.sh
PHPの解凍用プログラム
<?php
$zip = new ZipArchive;
$zip->open("command.zip");
$zip->extractTo("tmp");
$zip->close();