2014-10-24 4 views
0

Я использую одну функцию я вижу здесь для почтовых папок, и работает хорошо, но я вижу большую проблему, когда я использую этот вид слэш ../Php папки функция почтового индекса не работает

Функция:

<?php 
function Zip($source, $destination) 
{ 
    if (!extension_loaded('zip') || !file_exists($source)) { 
     return false; 
    } 

    $zip = new ZipArchive(); 
    if (!$zip->open($destination, ZIPARCHIVE::CREATE)) { 
     return false; 
    } 

    $source = str_replace('\\', '/', realpath($source)); 

    if (is_dir($source) === true) { 
     $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); 

     foreach ($files as $file) { 
      $file = str_replace('\\', '/', $file); 

      // Ignore "." and ".." folders 
      if (in_array(substr($file, strrpos($file, '/') + 1), array('.', '..'))) 
       continue; 

      $file = realpath($file); 

      if (is_dir($file) === true) { 
       $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); 
      } else if (is_file($file) === true) { 
       $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); 
      } 
     } 
    } else if (is_file($source) === true) { 
     $zip->addFromString(basename($source), file_get_contents($source)); 
    } 

    return $zip->close(); 
} 
?> 

В моем случае мне нужна почтовые файлы и папки, где файл с функцией для работы проносясь

Когда я использую эту функцию с этими косыми чертами, то результат подмигнул внутри застежку-молнию нет ничего, я t's пустого

Если я пытаюсь использовать этот код с папками на тот же уровень, и не использовать необходимость «../» все работает отлично

На самом деле моя проблема подмигнула при использовании функции в этом путь:

<?php 
    Zip("../images","backup_images.zip") 
?> 

Но если я использую как здесь, работает прямо

<?php 
    Zip("images","backup_images.zip") 
?> 
+0

так же есть папка 'images' на один уровень выше, где вы используете этот код? –

+0

Нет файла для создания резервной копии, он находится внутри одной папки с именем admin_backup и папкой с изображениями, которая находится за пределами того места, где у меня есть админ для резервного копирования, поэтому мне нужно использовать «../», приветствует – Francisco

ответ

0

Может вам вместо этого замените абсолютный путь?

Zip("../images","backup_images.zip")

становится:

Zip("/var/www/vhosts/domain.com/httpdocs/full/path/to/images","backup_images.zip")

Вы можете использовать phpinfo(); в PHP файл в том же месте, backup_images.zip найти правильный каталог.

+0

Мне нужно использовать с косой чертой , нет путей, приветствий – Francisco

+0

@Francisco '../' путь – Grice

+0

Да, как вы хотите, вы можете сказать относительный или абсолютный путь в этом случае относительный, считает – Francisco

Смежные вопросы