J'ai configuré un environnement Web Perl local sur ma machine Windows. L'application que je travaille est à l'origine d'un serveur Linux, et donc le shebang pour la source Ceci provoque l'erreur suivante Sur ma machine Windows Dev Machine: P> .pl code>. Les fichiers sont donc suivants:
(OS 2)The system cannot find the file specified.
8 Réponses :
J'utilise à votre Voici ce que je reçois lorsque j'exporte la clé: P> #! / usr / bin / perl code> dans mes scripts et configure Apache sur Windows pour ignorer la ligne Shebang. Ajouter
httpd.conf code> et configurez la clé de registre Windows comme expliqué dans le Apache Docs . P>
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command]
@="c:\\opt\\perl\\bin\\perl.exe"
Comme indiqué par les documents, j'ai essayé cela dans tous les contextes: Configuration du serveur, hôte virtuel, répertoire, .htaccess code> - mais cela ne semble pas résoudre l'erreur, que pourrais-je me tromper?
Oui j'ai redémarré. J'utilise Activeperl donc je ne sais pas, quelle clé de registre dois-je rechercher? J'utilise la directive dans httpd.conf code> juste en dessous de
documentaireOrot code> (ligne de configuration par défaut 177).
Merci, j'ai ajouté la clé hkey_classes_root \ .pl \ shell \ exécutant \ commandes code> avec reg_sz valeur
c: \ perl \ bin \ perl.exe -wt code>, et ça marche!
Je n'ai pas de fenêtres à portée de main, mais PerlCritic dit: donc, je suppose Edit: ne fonctionne pas sur Linux; apparemment fonctionne dans #! Perl code> devrait fonctionner. P>
perroquet code>, bien que je ne voie pas comment ils gèrent cela. p> p>
#! Perl code> ne fonctionne pas sur notre serveur Linux, mais fonctionne correctement sur ma machine de développement Windows locale. Merci quand même.
Il n'y a pas de ligne de shebang portable. Même sur la même plate-forme et la même architecture, quelqu'un pourrait avoir installé Perl est un emplacement différent. P>
L'astuce consiste à ne pas installer de modules et de scripts à la main. Lorsque vous emballez tout comme des distributions et utilisez le module Toolchain, les lignes Shebang sont modifiées automatiquement pour pointer vers le Perl que vous avez utilisé pour tout installer. Vous ne devriez pas avoir à penser à ces détails. :) p>
Je ne suis pas en mesure d'utiliser cette solution car les fichiers .pl code> ne sont pas exécutés sur notre serveur d'hébergement Linux partagé sans Shebang. Malheureusement, je ne suis pas en mesure de changer la configuration du serveur; J'aurais ajouté un gestionnaire Apache pour Perl si c'était le cas. En outre, il existe de nombreux scripts existants
.pl code> sur le site qui utilisent le shebang - si j'étais plus confiant avec Perl, je changerais probablement cela, mais je ne veux pas marcher sur les orteils de personne. parler.
Eh bien, vous n'avez pas besoin d'avoir la même ligne Shebang sur les deux installations. Une installation correcte va résoudre ce problème pour vous.
La façon dont j'ai eu ce travail était de copier Perl.exe à C: / usr / bin / et le renommer à Perl (Strip the .exe) P>
J'utilise # ! / USR / BIN / ENV PERL CODE> Comme Shebang sur tout mon Perl, que ce soit sur * Nix ou Windows. Windows l'ignore simplement et l'UNIXEN Suivez env au Perl Disto choisi. P>
dans Win7 et up Vous pouvez également le faire avec la commande "DOS" mklink.
Démarrer une coque CMD en tant qu'administrateur et faire quelque chose comme ce qui suit: p>
Créer un script shell redirigeant trivial: p>
Créer une entrée de registre: P>
Jot dans votre Apache va maintenant résoudre les Shebangs Unix par rapport à l'interprétation donnée par votre saveur de bash choisie. Cela donne beaucoup em> plus flexibilité que les chemins d'interprétation du code papier dans le registre. P> ol>ScriptInterpreterSource Registry
httpd.conf code> fichier: p>
Comment utiliser Linux Shebang (#! / usr / bin / perl) lors de l'exécution d'un site Web basé sur Perl avec {nom du site} sur localhost dans Windows 10?
Ceci fonctionne pour moi: P>
Dans la configuration par défaut, vous devez utiliser ce shebang: p> est-il possible d'inclure le répertoire (après-interrupteur) de manière permanente vers @inc? P> Oui, vous pouvez le faire en définissant les variables d'environnement Perllib ou Perl5Lib. Cela fonctionne lors de l'exécution du script Perl de la ligne de commande, mais il est étonnamment ignoré par Apache Server dans XAMPP. Cependant, l'un des répertoires @inc (C: / Perl / Perl / Site / Lib) est généralement vide pour que vous puissiez créer un lien symbolique sur votre répertoire de site Web: P> #!/usr/bin/perl
Beaucoup de vos questions souffrent du problème xy ( perlmonks.org/index.pl?node_id = 542341 ). Vous posez des questions sur ce que vous pensez que la solution est au lieu de poser du problème. Dans ce cas, je ne pense pas que vous avez réellement besoin d'une ligne de plate-forme de plate-forme de plate-forme, vous avez simplement besoin d'un qui fonctionne pour ActivePerl sur Windows 7 en utilisant Apache 2.
@brian génial! Merci pour le conseil. J'ai toujours su que je fasse cela et que cela réside le problème. Je vais essayer de poser des questions sur le problème dans les réponses futures au lieu de me faire déjà penser à la solution.
Eh bien, maintenant que vous avez changé la question, c'est beaucoup plus facile: vous ne mettez pas une ligne de shebang dans le script. Il n'y a aucune exigence pour qu'il soit là à moins que vous souhaitiez que le système découvre l'interprète à appeler. Cela n'a pas d'importance dans votre cas.
@brian question mise à jour.