У меня есть скрипт, в котором я меняю имя ZIP-файла, заменяю слово в них сразу, а затем добавляю в них файл.Люди в StackOverflow были достаточно любезны, чтобы помочь мне, и это прекрасно работает.
Только одна большая проблема.Когда я распаковываю ZIP-файлы на веб-сервере, все файлы неправильно изменяются в chmod.
Все файлы и папки имеют вид chmod 666. И мне приходится вручную изменять chmod папки до 755, а файлы до 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>";
}
}
Спасибо за помощь!