Je viens d'installer Ubuntu 13.10 et j'essaie d'installer Apache. Mais lorsque j'ai essayé d'exécuter un fichier Perl dans cgi-bin, le navigateur n'affichait que du texte brut.
Mon default.conf d'Apache est ci-dessous:
AddHandler cgi-script .cgi .pl
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch
#Order allow,deny
Require all granted
Allow from all
</Directory>
Ceci est mon fichier cgi Perl:
#!/usr/bin/Perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> Perl CGI</title>\n";
print "<body>";
print "hello Perl-cgi!!!!!!!";
print "</body>";
print "</html>\n";
J'ai activé le gestionnaire dans mime.conf. Le fichier se trouve dans/usr/lib/cgi-bin et je l'exécute en tant que http pas file: /// J'ai également installé mod_Perl . Je suis nouveau sur Apache. J'ai cherché pendant plusieurs heures, essayé des configurations infinies d'Apache, lu le document Apache mais je ne peux toujours pas le résoudre. Est-ce parce que le code "+ ExecCGI" a un problème? J'ai vu une autre personne rencontrer également un problème similaire après la mise à jour de Ubuntu 12.04 à 13.10. Peut-être que le problème est Ubuntu? S'il vous plaît, aidez-nous. La configuration Apache et la permission Ubuntu me rendent presque fou.
Essayez avec cette commande:
Sudo a2enmod cgi
Puis redémarrez Apache!
J'ai rencontré ce problème en essayant de configurer bugzilla dans Ubuntu 14.04 La réponse de @ Andrew était très bonne, tout comme les liens de @ Kevin. Donc, mis à part l'activation de cgi, assurez-vous que le module de Perl pour Apache2 est installé. Vous pouvez le faire en:
Sudo apt-get install libapache2-mod-Perl2
Cela activera automatiquement le module et redémarrera le serveur Apache. Si ce n'est pas le cas manuellement.
Vous n'avez pas assez de représentants pour vous inviter tous les deux, alors merci.
Développer le répondre de @tops.
Essayez Sudo a2enmod cgi
, si vous avez déjà essayé de suivre plusieurs didacticiels tels que Tutoriel Apache: contenu dynamique avec CGI , Ubuntu HTTDP ou Comment installer le serveur Web Apache2 avec PHP, CGI et Perl dans Ubuntu Serveur , et ne peut toujours pas comprendre ce qui leur manque.
Puis redémarrez Apache!
Ce qui peut être fait avec:
Sudo /etc/init.d/Apache2 restart
Sudo Apache2ctl restart
Sudo service Apache2 restart
<- essayez ceci en premier
Cela a fonctionné pour moi sur Ubuntu 13.10.
Nouvelles commandes pour les utilisateurs provenant de distributions basées sur RedHad:
a2enmod
a2dismod
a2enconf
a2disconf
a2ensite
a2dissite
N'oubliez pas que le fichier de configuration principal est /etc/Apache2/Apache2.conf
par défaut et que les composants de configuration individuels des modules et des sites Web se trouvent dans des fichiers distincts.
EDIT: Développé avec des détails sur les raisons pour lesquelles les gens qui viennent à cette page pourraient avoir des difficultés à activer Apache CGI sur Ubuntu.
Étapes pour installer Apache sur Ubuntu 13.10:
Sudo apt-get install Apache2
Sudo service Apache2 start
Étapes pour tester Apache sur Ubuntu 13.10:
Étapes pour utiliser les programmes CGI sous Apache sur Ubuntu 13.10:
Étapes pour tester les programmes CGI sous Apache sur Ubuntu 13.10:
/usr/lib/cgi-bin/
(par exemple /usr/lib/cgi-bin/test
)Sudo chmod +x /usr/lib/cgi-bin/test
Note: "your-Host-here.com" pourrait bien être "localhost", mais SO ne me laissera pas l'utiliser dans une URL: - /
Assurez-vous que le mode Apache cgi est activé
Sudo a2enmod cgi //will enable the cgi mode
Sudo a2dismod cgi //Will disable the cgi mode
Conservez tous vos fichiers dans le dossier "cgi-bin" de la racine Web.
Sudo mkdir /home/www/cgi-bin
Assurez-vous que l'autorisation de fichier sur le fichier .cgi est correcte
Sudo chmod 755 yourFile.cgi
Essayez de l'exécuter via un terminal
Perl /Path_To_The_File/fileName.cgi
Assurez-vous que votre nomFichier.cgi contient du code ci-dessous en haut du fichier.
#!/usr/bin/Perl -w
print "Content-type: text/html\n\n";
Si toutes les étapes ci-dessus fonctionnent bien, alors
Créer un hôte virtuel dans Apache pour votre projet Perl
cp /etc/Apache2/sites-available/000-default.conf ./your_project.conf
Sudo nano /etc/Apache2/sites-available/your_project.conf
Dans votre fichier your_project.conf, remplacez ces lignes
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/cgi-bin //Define where your project is
ServerName your_project.com //URL through which you want to access
ServerAlias your_project.com
ErrorLog ${Apache_LOG_DIR}/error.log //Error for the project will store in this file
CustomLog ${Apache_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" //particular directory is set aside for CGI programs
<Directory /var/www/html/cgi-bin/>
##TO consider the files as cgi which has .cgi and .pl extension
Options +ExecCGI
AddHandler cgi-script .cgi .pl
##To consider all files as cgi file (if want to use remove # from last two line add in above 2 line)
#Options ExecCGI
#SetHandler cgi-script
</Directory>
</VirtualHost>
Exécuter ces commandes
Sudo a2ensite your_project.conf //Will enable your configuration file
Sudo service Apache2 restart //Restarting Apache2
Ajouter votre hôte
Sudo nano /etc/hosts
//add this line
127.0.0.1 your_project.com
Maintenant, lancez exécuter votre fichier cgi
your_project.com/cgi-bin/fileName.cgi