ZIP文件chmod解压缩后不正确(PHP)

时间:2018-08-25 07:16:17

标签: php permissions zip chmod

我有一个脚本,可以在其中更改ZIP文件的名称,一次替换其中的一个单词,然后向其中添加文件。 StackOverflow上的人员足够有帮助我,而且效果很好。

只有一个大问题。当我在Web服务器上提取ZIP文件时,所有文件的密码修改都不正确。

所有文件和文件夹均为chmod666。我必须手动将文件夹的chmod更改为755,并将文件的chmod更改为644。

更改ZIP内的文件是否会更改文件的chmod?如果是这样,在脚本运行后如何正确修改这些文件?

这是我用来更改ZIP文件名(从中删除www。以便我用来添加文件的另一个脚本可以正常工作)并更改其中文件的代码。

$search='var1';
$replace='var2';

echo "ZIP files successfully renamed:<br>";

$directory =__DIR__ . '/zips/';
foreach (glob($directory."www.*.zip") as $filename) {
$file = realpath($filename);
rename($file, str_replace("www.","",$file));

$file2 = str_replace('C:\path\to\folder/zips/','',$filename);
$file3 = str_replace('www.','',$file2);
echo "$file2 -> $file3<br>";
}


function modifyzip($archive,$search,$replace){
$zip = new ZipArchive();
$status = $zip->open( $archive );

if( $status == true ){
    /* Get the count of files BEFORE the loop */
    $filecount = $zip->numFiles;

    for( $i=0; $i < $filecount; $i++ ){
        $name = $zip->getNameIndex( $i );
        $content = $zip->getFromName( $name );
        $edited = str_replace( $search, $replace, $content );
        $zip->deleteName( $name );
        $zip->addFromString( $name, $edited );
    }   
}
$zip->close();  
}

echo "<br><br>ZIP files successfully changed var1 to var2:<br>";

$dir=__DIR__ . '/zips/';
$col=glob( $dir . '*.zip' );
if( $col && count( $col ) > 0 ){
foreach( $col as $archive ){
    call_user_func( 'modifyzip',$archive,$search,$replace );

        $archive2 = str_replace('C:\path\to\folder/zips/','',$archive);
        echo "$archive2<br>";
}


}

谢谢您的帮助!

0 个答案:

没有答案