web-dev-qa-db-fra.com

Le script Perl rendu dans le navigateur sous forme de code par le biais d'un lien symbolique - correct en cas d'accès direct

J'ai une application Rails 4 qui contient des vues qui sont postées dans les scripts Perl cgi. Les scripts Perl sont accessibles via un lien symbolique vers un dossier appelé "cgi-bin". Lorsque je navigue dans un script Perl via le lien symbolique, il est affiché sous forme de texte et non exécuté (par exemple, localhost: 3000/cgi-bin/test.cgi). Toutefois, lorsque je les accède directement, ils s'exécutent sans problème chemin/à/cgi-bin/test.cgi).

J'utilise Apache2 sur os x. Dans le répertoire localhost/path/to/j'ai un fichier .htaccess qui contient les éléments suivants:

# General Apache options
AddHandler fastcgi-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI

J'ai exactement les mêmes lignes dans le fichier .htaccess que j'ai dans localhost: 3000 /

J'ai également décommenté le AllowOverride dans httpd.conf.

Il n'y a pas d'erreur dans le journal des erreurs d'Apache. Lorsque j'accède au lien direct vers test.cgi, une nouvelle ligne est ajoutée au journal d'accès d'Apache. Lorsque j'accède au script via le lien symbolique (et le rendu est sous forme de texte), aucune ligne n'est ajoutée au journal d'accès.

Une idée pourquoi cette erreur se produit? Cette configuration fonctionnait correctement dans une version antérieure de Rails d'OS X, mais récemment, je suis passée à Mavericks et je me suis dit que je devrais également mettre à jour l'application Rails vers la v4.0.

Mise à jour - J'ai débogué un peu plus et constaté que les directives du fichier htaccess ne sont pas respectées. Lorsque j'ai ajouté l'authentification au fichier htaccess, j'étais toujours en mesure d'accéder à un fichier html du répertoire et lorsque j'ai ajouté une règle de redirection, je n'ai pas été redirigé. Il semble que ce soit le problème que je dois résoudre, bien que je ne sois pas sûr de la façon de le résoudre.

2
John Dittmar

J'ai récemment résolu ce problème en basculant ma configuration Rails sur Passenger, qui utilise Apache. Maintenant, les scripts Perl et le site Rails sont exécutés via Apache. Cela a la valeur ajoutée que maintenant les fichiers .htaccess sont honorés, me permettant d’exécuter les scripts Perl sans problème.

Il me fallait résoudre quelques autres problèmes d'autorisation, mais tout fonctionne maintenant. J'ai posté des instructions détaillées sur la façon dont j'ai résolu ce problème dans les 2 messages suivants:

Mise en train de mavericks sur les 4 et les passagers

Perl-scripts-now-work-in-Rails-passagers

1
John Dittmar