J'ai installé Apache 2.2.22 sur Ubuntu 12.04. Mais dans le navigateur, lorsque je tape localhost, il donne le fichier index.pl à télécharger au lieu de l’exécuter. Ce que j'ai essayé:
1. chmod 755 index.pl
2. Ajout de la ligne DirectoryIndex index.pl index.html à etc/Apache2/site-available/example.com, qui se présente comme ci-dessous.
J'ai déjà fait ces choses sur une machine Windows. Mais la structure des répertoires est différente sous Windows et Ubuntu. Le fichier Httpd.conf est vide dans Ubuntu. Et en cherchant dans les annuaires, j'ai trouvé non. de fichiers similaires au fichier de configuration. Donc, je suis confus où exactement je dois faire des changements de configuration.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example.com
DocumentRoot /var/www/example.com/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
# This line was added by me
DirectoryIndex index.html index.pl
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Vous n'avez pas expliqué l'emplacement de votre fichier index.pl dans la hiérarchie des fichiers, mais je suppose que vous l'avez dans votre DocumentRoot.
Le problème, c'est que votre répertoire DocumentRoot est généralement utilisé pour servir des documents statiques. Pour des raisons de sécurité, les fichiers de la hiérarchie DocumentRoot ne sont jamais traités (c'est-à-dire exécutés) - et les fichiers du répertoire ScriptAlias ne sont jamais servis de manière statique.
Vous devez séparer votre contenu exécutable (Perl, php, sh) de votre contenu servi statiquement (fichiers html, images, css, js) - afin que le serveur Web sache que les fichiers situés dans le répertoire 'this' et en-dessous ne sont pas nécessaires. être traité (comme des images) et les fichiers de ce répertoire le sont.
À cette fin:
La sortie html de votre index.pl peut toujours référencer des images, etc. à partir de la racine (par exemple, placez un dossier images dans le dossier racine de votre document et référencez des images html sous la forme /images/logo.png), et les scripts peuvent être liés (via formulaire). soumission ou href) à partir du contenu HTML du dossier de script (par exemple, sous la forme /cgi-bin/processform.pl)