2011-08-17 3 views
3

J'ai un script décompresse les fichiers sur le serveur mais il est possible de décompresser les fichiers sur un serveur externe ou distant.Pouvez-vous décompresser un fichier .zip sur un serveur distant?

Par exemple puis-je

<?php 
$zip = new ZipArchive; 
$zip->open('ftp://user:[email protected]/path/file.zip'); 
$zip->extractTo('ftp://user:[email protected]/'); 
$zip->close(); 
echo "Ok!"; ?> 

Merci beaucoup

+0

Copiez le fichier sur votre serveur (programme), puis décompressez-le. –

+0

J'espérais construire de façon dynamique un script qui transfèrerait des fichiers d'un serveur à un autre et l'extrairait. – user827570

+1

Oui, ajoutez donc une ligne de code avant la vôtre pour copier le fichier sur votre serveur avant de l'extraire. 'file_put_contents ('file.zip', file_get_contents ('ftp: // utilisateur: [email protected]/path/file.zip'));' alors '$ zip-> open ('file.zip');' –

Répondre

2

Vous pouvez essayer ce qui suit via une connexion ssh à ce serveur:

<?php 
$connection = ssh2_connect('example.com', 22); 
ssh2_auth_password($connection, 'username', 'password'); 
$stream = ssh2_exec($connection, 'unzip /path/to/file.zip'); 
?> 

Plus d'infos ici: http://www.php.net/manual/en/function.ssh2-exec.php

+0

Salut, merci pour votre réponse mais j'ai un problème en cours d'exécution du code ci-dessus Je reçois "Appel à la fonction indéfinie ssh2_connect() sur la ligne 2" – user827570

+0

Vous devez compiler PHP avec le support SSH. –

+0

Je ne suis pas très familier avec PHP, mais je recommande de lire http: //www.php.net/manual/en/function.ssh2-exec.php et assurez-vous que vous avez configuré ssh sur votre serveur et vérifiez le port/nom d'utilisateur/mot de passe – sbrichards

2

pour décompresser un fichier distant sur un serveur avec PHP une solution assez simple qui a fonctionné pour moi:

  1. ftp le fichier zip, dire a.zip, dans le dossier distant où vous le souhaitez extrait

  2. créer un fichier php unzip.php et ftp à la même dossier que le fichier zip ci-dessus

  3. insérer le code suivant dans unzip.php:

<?php 
    $zip = new ZipArchive; 
    $zip->open('a.zip'); 
    $zip->extractTo('x/'); 
    $zip->close(); 
    echo "Ok!"; 
?> 
  1. ensemble chmod de unzip.php à l'exécutable

  2. exécuter le fichier php depuis tout navigateur - vous shd obtenir un 'Ok' confirmant l'extraction

Questions connexes