web-dev-qa-db-fra.com

Impossible d'exécuter cgi, afficher uniquement le texte brut (Ubuntu 13.10 Apache 2.4)

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. 

15
user3026793

Essayez avec cette commande:

Sudo a2enmod cgi

Puis redémarrez Apache!

45
tops

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. 

7
kaykae

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:

  • Modules
    • a2enmod
    • a2dismod
  • Configurations
    • a2enconf
    • a2disconf
  • Sites virtuels
    • 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.

6
Kevin

É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:

  • Aucun. CGI est configuré hors de la boîte.

Étapes pour tester les programmes CGI sous Apache sur Ubuntu 13.10:

  • Modifier un fichier dans /usr/lib/cgi-bin/ (par exemple /usr/lib/cgi-bin/test)
  • Ajoutez du code Perl (votre code ci-dessus, par exemple)
  • Sudo chmod +x /usr/lib/cgi-bin/test
  • Visitez http://votre-hote-here.com/cgi-bin/test

Note: "your-Host-here.com" pourrait bien être "localhost", mais SO ne me laissera pas l'utiliser dans une URL: - /

0
Dave Cross

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
0
bikash.bilz