2011-10-21 5 views
0

J'ai des problèmes de compression d'un répertoire. La ligne suivante fera l'affaire mais elle inclut également le répertoire racine.chemin d'exécution zip racine

exec('zip -r '.$tmp_zip.' '.$filename_no_ext.'/rss-ticker/*'); 

Je veux que zip tout dans le répertoire rss-ticker Comment résoudre ce problème?

Merci pour votre aide

Répondre

0

À moins d'avoir une raison écrasante de ne pas le faire (comme un désir de vous causer beaucoup de mal et de maux de tête), vous devriez vraiment utiliser la boîte à outils ZipArchive. Il y a un exemple de comment à this question.

Quant à obtenir zip travailler avec exec, je remarquais deux points:

  1. vous aurez certainement besoin de la variable $filename_no_ext là-dedans. Si vous venez d'avoir un .. En ce moment, parce que vous commencez rss-ticker avec /, il est supposé que le dossier est à la racine du système de fichiers. Je ne pense pas que tu le veuilles.
  2. Vous n'avez pas besoin de la fin * pour que la ligne de commande zip fonctionne.
1

Quel programme zip utilisez-vous? tar fonctionne de la manière que vous le souhaitez ci-dessus, alors vous pouvez gzip.

Vous pouvez également indiquer le chemin chdir() dans le répertoire que vous souhaitez compresser et spécifier le chemin d'accès * qui ne doit contenir que les fichiers du répertoire de travail en cours.

Si vous ne pouvez pas le faire fonctionner comme vous le souhaitez (ou même si vous le pouvez) essayez le ZIP Extension ou this 3rd party library - le faire en PHP pur rendra votre code plus portable.