J'ai plusieurs modules Perl installés sur ma machine hôte au ~/perl
, comment les ajouter au chemin du module Perl? Définir PERL5LIB
ou unshift
les chemins à @INC
fonctionne sûrement, mais la variable d'environnement n'aide pas lors de l'exécution en tant que script CGI et la manière @INC
n'est pas très portable. Y a-t-il un meilleur moyen? Cela doit être un problème commun, ai-je oublié quelque chose?Comment puis-je définir le chemin d'inclusion de Perl pour les modules d'un script CGI?
Répondre
PERL5LIB fonctionne très bien pour les scripts CGI. Vous devez juste définir la variable au bon endroit, comme la configuration du serveur. Quel serveur web utilisez-vous? Pour Apache, j'utilise la directive SetEnv de mod_env.
@INC est portable. Les chemins que vous y mettez peuvent ne pas être les mêmes sur toutes les machines, mais vous ne devriez pas avoir de problème avec la variable elle-même.
Avez-vous lu les entrées FAQ dans perlfaq8:
Un nettoyeur façon de le faire est imo:
use lib "/path/" ;
il y a d'autres intéressantes et de bonnes façons de le faire que l'on peut trouver ici:
http://www.slideshare.net/pfig/cpan-training-presentation/
Aussi, re: CGI scripts, vous pouvez définir des chemins PERL5LIB pour votre Env CGI, cela dépend de votre hébergeur. Certains Webhosts permettent un contrôle spécifique des variables env pour l'environnement CGI, et vous devez simplement les définir, d'autres peuvent avoir une liste de "permis" qui permet aux variables visibles à l'heure de démarrage d'apparaître dans la portée locale.
Peut aider à lire sur la façon de faire cela sur votre serveur HTTP spécifique.
Il y a une autre option, si le réglage ENV est pas à votre goût: local::lib
qui recherche des chemins prédéfinis automatiquement.
+1 Juste à noter que PERL5LIB est ignoré si vous avez taint mode allumé ... http: //perldoc.perl.org/perlsec.html#Taint-mode-and-%40INC – draegtun
- 1. Comment valider les dates dans un script CGI Perl?
- 2. Comment déterminer de manière fiable le nom d'un fichier téléchargé dans un script CGI Perl?
- 3. Comment installer les dépendances de script Perl?
- 4. OCaml: Définir les modules
- 5. Le script CGI n'effectue pas toutes les visites de pages
- 6. Comment configurer Apache pour exécuter des scripts CGI Perl?
- 7. Comment écrire un plugin firefox pour un script cgi existant?
- 8. Comment puis-je utiliser un processus d'arrière-plan à partir d'un script CGI Perl sous Windows?
- 9. Comment exécuter un script Perl depuis un script Perl?
- 10. Comment spécifier un chemin relatif pour le script jsUnit-ant?
- 11. Comment définir le chemin d'exécution en MbUnit?
- 12. Mesurer le temps de chargement du script python cgi?
- 13. Comment puis-je inclure des modules Win32 uniquement lorsque j'utilise mon script Perl sous Windows?
- 14. Quel encodage de contenu utilise un script CGI Perl par défaut?
- 15. Comment lancer HTMLDOC à partir d'un script CGI?
- 16. Comment puis-je inclure tout/partie des "sous-modules" dans un script Perl?
- 17. Pourquoi mon script simple fastCGI Perl échoue?
- 18. Comment définir le répertoire de profil pour les applications xulrunner en utilisant un chemin relatif personnalisé?
- 19. Script Perl Configuration et mise en œuvre de chemin relatif sur Windows (XP)/Unix (Solaris)
- 20. Comment faire pour définir le chemin de classe pour le client du service Web dans build.xml
- 21. Pourquoi mon script Perl CGI ne compile-t-il pas après la mise à niveau de Perl?
- 22. Comment définir le chemin de classe sous Linux?
- 23. Développer un chemin relatif dans le script Ant, pour Inkscape
- 24. Quels sont les bons modules Perl pour la programmation basée sur les flux sur les fichiers?
- 25. Comment ajouter facilement les modules Perl non installés dans mon répertoire de développement à @INC?
- 26. Pourquoi mon script Perl s'arrête-t-il si le module CGI est utilisé après la lecture de stdin sur Windows?
- 27. Comment puis-je utiliser un programme Perl CGI pour rogner des tâches de longue durée?
- 28. Comment remplacer les indicateurs de compilation de perl lors de la construction de modules?
- 29. Comment trouver le répertoire site_perl standard pour Perl?
- 30. Comment ajouter un chemin de lib spécifique à un script dans mod_perl?
Merci, je ne connaissais pas la directive SetEnv. C'est exactement ce que je cherchais. – zoul
Cela ne fonctionne pas sur toutes les configurations de serveur - certaines désactivent SetEnv, et d'après ce que je lis, d'autres ne le permettent que pour définir les variables d'environnement qui commencent par HTTP_. Une sorte de mesure de sécurité, je pense. – user1618143