2017-04-04 5 views
0

Je suis nouveau à CGI ou Apache. J'essaye d'installer une application appelée comme mooshak.Exécuter le fichier CGI sans extension

L'installation se termine bien. Mais quand j'ouvre le site local, il télécharge simplement le fichier au lieu de l'exécuter.

Quand j'ouvre http://localhost/~mooshak/cgi-bin/execute, il télécharge simplement le fichier comme indiqué:

#!/bin/sh 
# the next line restarts using tclsh \ 
PATH=$PATH:/usr/local/bin:/usr/contrib/bin ; exec tclsh "$0" "[email protected]" 

#-*-Mode: TCL; iso-accents-mode: t;-*- 

set errorCode NONE 

cd ../.. 

lappend auto_path packages 

source .config 

execute::command_line 

Mon fichier /etc/apache2/mods-enabled/userdir.conf ressemble à ceci:

<IfModule mod_userdir.c> 
     <Directory /home/*/public_html/cgi-bin> 
       Options +ExecCGI -Includes -Indexes 
       SetHandler cgi-script 
       Order allow,deny 
       Allow from all 
     </Directory> 
</IfModule> 

Que dois-je faire?

Répondre

0

Essayez comme ça

<Directory /home/*/public_html> 
     Options -Includes -Indexes 
     Order allow,deny 
     Allow from all 
</Directory> 
<Directory /home/*/public_html/cgi-bin> 
     Options +ExecCGI -Includes -Indexes 
     SetHandler cgi-script 
</Directory> 

Et donner au scénario chmod +x

+0

non ...ça ne marche pas :( –

0

Essayez d'utiliser /urs/lib/cgi-bin pour les scripts cgi. Tout le reste vous donnera un haedache si vous ne savez pas quoi faire.

Les scripts cgi doivent être exécutable et lisible pour l'utilisateur www-data

Pour la version Apache> = 2.2 vous devrez ajouter une entrée dans /etc/apache2/conf-available. Ma configuration ressemble à ceci ...

[email protected]:~$ cat /etc/apache2/conf-available/cgi-bin.conf 
<IfModule mod_alias.c> 
    <IfModule mod_cgi.c> 
     Define ENABLE_USR_LIB_CGI_BIN 
    </IfModule> 

    <IfModule mod_cgid.c> 
     Define ENABLE_USR_LIB_CGI_BIN 
    </IfModule> 

    <IfDefine ENABLE_USR_LIB_CGI_BIN> 
     ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
     <Directory "/usr/lib/cgi-bin"> 
       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
      AllowOverride AuthConfig 
       AuthType Basic 
       AuthName "Suleiman's Heimat 2.0" 
       AuthBasicProvider file 
       AuthUserFile /etc/apache2/passwd 
       Require valid-user 
     </Directory> 
    </IfDefine> 
</IfModule> 

Ce sont les paramètres par défaut pour les systèmes Debian, et une protection supplémentaire par mot de passe. Vous appelez ensuite a2enconf cgi-bin. Ceci n'a rien à voir avec /etc/apache2/mods-enabled! Je ne peux pas trouver une raison d'y mettre du code cgi. vous hériterez devez activer la passerelle interface commune via

a2enmod cgi 

Cela mettra une entrée en /etc/apache2/mods-enabled.

Last but not least, vous devez redémarrer le serveur via /etc/init.d/apache2 restart

Il vous allez.
Espérons que cela aidera.


Addition

Vous devez exécuter apache2ctl configtest pour vérifier votre configuration, avant de redémarrer le serveur!

/var/log/apache2/ a aussi une bonne info quand quelque chose se dirige vers le sud.
Vous pouvez également utiliser la commande systemctl status apache2.service pour vérifier l'état de votre service et journalctl -b -n 30 -u apache2.service pour obtenir les 30 dernières entrées de protocole.