我正在创建一个php文件,它会在将其从BitBucket(Git repo)中删除后更新我的网站。它下载整个主服务器或提交的zip文件,然后将其解压缩到网站的文件夹中。
我遇到的问题是有一个随机命名的文件夹,其中包含zip文件中的所有文件。
我的zip文件内容类似:
master.php
- (bitbucketusername)-(reponame)-(commitnumber)
- folder1
- index.php
- test.php
- index.php
- config.php
- etc...
但是如何“绕过”“随机”命名的文件夹并将文件夹的内容提取到网站的根目录?
echo "Unzipping update...<br>" . PHP_EOL;
$zip = new ZipArchive;
$res = $zip->open($filename);
if ($res === TRUE) {
$zip->extractTo('/path/to/www');
$zip->close();
} else {
echo 'Error: The zip file could not be opened...<br>' . PHP_EOL;
}
在此处找到相关问题:
Operating with zip file in PHP
但是如何让它获得“随机”命名文件夹的名称?
答案 0 :(得分:2)
将文件解压缩到tmp目录,然后将文件从“随机”命名的父文件夹中删除到您想要的文件夹。
echo "Unzipping update...<br>" . PHP_EOL;
$zip = new ZipArchive;
$res = $zip->open($filename);
if ($res === TRUE) {
$zip->extractTo('/tmp/unzip');
$directories = scandir('/tmp/unzip');
foreach($directories as $directory){
if($directory!='.' and $directory!='..' ){
if(is_dir($directory)){
// rcopy from http://ben.lobaugh.net/blog/864/php-5-recursively-move-or-copy-files
rcopy('/tmp/unzip/'.$directory,'/path/to/www');
// rm /tmp/unzip here
}
}
}
$zip->close();
} else {
echo 'Error: The zip file could not be opened...<br>' . PHP_EOL;
}