2010-07-09 5 views
3

J'ai un script qui montrera certaines options de compression à l'utilisateur (gzip, zip, et bzip). Étant donné que cela est destiné à fonctionner à la fois sur Linux & Windows et la bibliothèque Zlib ne sera pas disponible, je dois compresser tous les fichiers en utilisant des commandes Unix. Bien sûr, si le script s'exécute sous Windows, il n'aura probablement aucun des outils de compression en ligne de commande, et l'application ne devrait donc montrer aucun choix à l'utilisateur. Donc, ce que je veux savoir, c'est comment vérifier si l'outil de ligne de commande existe. Je pourrais juste vérifier si le fichier exécutable existe, mais ce n'est pas fiable du tout (par exemple, sur mon bureau j'utilise Gentoo Linux et la commande zip vit sur /usr/bin, d'autre part, sur mon serveur il vit le /bin).Comment vérifier si une commande peut être exécutée?

+2

Question similaire: [Comment vérifier si une commande shell existe à partir de PHP] (http://stackoverflow.com/questions/12424787/how-to-check-if-a-shell-command-exists-from-php –

Répondre

3

Utilisez la commande which. Par exemple, utilisez which zip pour savoir où vit zip et si elle existe. Il est livré en standard sous Linux/Mac, et est également disponible for Windows.

+0

Ici http://stackoverflow.com/a/677212/1041470 recomended pour éviter 'which' car cette implémentation de commande est différente pour chaque OS. – VladSavitsky

0

Vous pouvez simplement compiler zlib pour Windows et y lier votre programme ... sinon vous devrez vivre avec le codage en dur quelques noms de programme dans votre application, et analyser manuellement la variable PATH de l'utilisateur pour trouver où ils sont installés .

Ou, si vous souhaitez utiliser une bibliothèque, vous pouvez utiliser cette fonction de glib: http://www.gtk.org/api/2.6/glib/glib-Miscellaneous-Utility-Functions.html#g-find-program-in-path

Mais si vous utilisez glib dans votre application, à ce moment-là, il est probablement plus facile de construire zlib pour les fenêtres.

0

Zlib peut être installé sur tous les systèmes d'exploitation ci-dessus.

Si vous regardez le manuel ...

www.php.net/manual/en/zlib.installation.php

Il dit: «Le support intégré pour zlib est disponible avec PHP 4.3.0. "

Zlib n'est pas activé par défaut, vous devez l'activer manuellement dans php.ini. Afin de vérifier si zlib ou tout autre module est activé voir ce tutoriel:

www.wlscripting.com/tutorial/47

Questions connexes