Besoin d'aide pour qu'Apache veuille bien exécuter un CGI

Bonjour à tous,

Je n’ai jamais bossé avec les CGI sous Apache et là j’essaie d’installer un module de paiement Paybox qui utilise un CGI.

Alors j’ai plusieurs sites sur ma machine, dont le site e-commerce qui comme les autres est géré par un vhost dédié.

J’ai créé un répertoire cgi-bin à la racine de ce site (/www/monsite/magento/cgi-bin/) dans lequel j’ai placé le CGI que donne Paybox ce qui donne /www/monsite/magento/cgi-bin/modulev3.cgi. J’ai aussi rendu www-data proprio de cgi-bin/* et j’ai fait un chmod 755 sur tout ce beau monde.

Ensuite au niveau du vhost j’ai ajouté cela :

[code]ScriptAlias /cgi-bin/ /www/monsite/magento/cgi-bin/

<Directory /www/monsite/magento/cgi-bin/>
Options +ExecCGI
AddHandler cgi-script .cgi
[/code]

Pour finir j’ai rechargé Apache et résultat : quand je tape l’URL de mon site suivie de /cgi-bin/modulev3.cgi ce dernier est proposé en téléchargement par le navigateur au lieu d’être exécuté sur le serveur…

Je précise qu’un a2enmod cgi retourne “Module cgi already enabled”

Alors je ne sais plus trop quoi faire car les documentations que j’ai trouvé à propos de la config Apache/CGI ne donnent rien de plus…

Merci d’avance pour votre aide et bon dimanche à tous !

Il n’y a pas un .htaccess qui surcharge ton option ExecCgi?

Bonsoir,

Oui, le voici :

[code]############################################

uncomment these lines for CGI mode

make sure to specify the correct cgi php binary file name

it might be /cgi-bin/php-cgi

Action php5-cgi /cgi-bin/php5-cgi

AddHandler php5-cgi .php

############################################

GoDaddy specific options

Options -MultiViews

you might also need to add this line to php.ini

cgi.fix_pathinfo = 1

if it still doesn’t work, rename php.ini to php5.ini

############################################

this line is specific for 1and1 hosting

#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php

############################################

default index file

DirectoryIndex index.php

############################################

adjust memory limit

php_value memory_limit 64M

php_value memory_limit 128M
php_value max_execution_time 18000

############################################

disable magic quotes for php request vars

php_flag magic_quotes_gpc off

############################################

disable automatic session start

before autoload was initialized

php_flag session.auto_start off

############################################

enable resulting html compression

#php_flag zlib.output_compression on

###########################################

disable user agent verification to not break multiple image upload

php_flag suhosin.session.cryptua off

###########################################

turn off compatibility with PHP4 when dealing with objects

php_flag zend.ze1_compatibility_mode Off
########################################### # disable POST processing to not break multiple image upload
SecFilterEngine Off
SecFilterScanPOST Off

############################################

enable apache served files compression

http://developer.yahoo.com/performance/rules.html#gzip

# Insert filter on all content
###SetOutputFilter DEFLATE
# Insert filter on selected content types only
#AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

# Netscape 4.x has some problems...
#BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
#BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don't compress images
#SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content
#Header append Vary User-Agent env=!dont-vary

############################################

make HTTPS env vars available for CGI mode

SSLOptions StdEnvVars

############################################

enable rewrites

Options +FollowSymLinks
RewriteEngine on

############################################

you can put here your magento root folder

path relative to web root

#RewriteBase /magento/

############################################

workaround for HTTP authorization

in CGI environment

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

############################################

always send 404 on missing files in these folders

RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################

never rewrite for existing files, directories and links

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

############################################

rewrite everything else to index.php

RewriteRule .* index.php [L]

############################################

Prevent character encoding issues from server overrides

If you still have problems, use the second line instead

AddDefaultCharset Off
#AddDefaultCharset UTF-8

############################################

Add default Expires header

http://developer.yahoo.com/performance/rules.html#expires

ExpiresDefault "access plus 1 year"

############################################

By default allow all access

Order allow,deny
Allow from all

############################################

If running in cluster environment, uncomment this

http://developer.yahoo.com/performance/rules.html#etags

#FileETag none

[/code]

Salut,
En “clair” ça donne ça:

DirectoryIndex index.php <IfModule mod_php5.c> php_value memory_limit 128M php_value max_execution_time 18000 php_flag magic_quotes_gpc off php_flag session.auto_start off php_flag suhosin.session.cryptua off php_flag zend.ze1_compatibility_mode Off </IfModule> <IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule> <IfModule mod_deflate.c> </IfModule> <IfModule mod_ssl.c> SSLOptions StdEnvVars </IfModule> <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* index.php [L] </IfModule> AddDefaultCharset Off <IfModule mod_expires.c> ExpiresDefault "access plus 1 year" </IfModule> Order allow,deny Allow from all

Je crois qu’il manque:

AddHandler cgi-script .cgi Options +ExecCGI

htaccess-guide.com/enable-cg … e-cgi-bin/

Voilà.

Oups, désolé en fait ce .htaccess est dans /www/monsite/magento/ et non dans /www/monsite/magento/cgi-bin/ …

Pour compléter, voici le vhost :

[code]<VirtualHost *:80>
DocumentRoot /www/monsite/magento
ServerName monsite.fr
ErrorLog /www/monsite/logs/error.log
LogLevel warn
CustomLog /www/monsite/logs/access.log combined
ServerSignature Off

<Directory /www/monsite/magento>
           Allow from all
           Options FollowSymLinks
           AllowOverride All
</Directory>
[/code]

Bonjour à tous,

Me voilà toujours bloqué sur ce souci d’exécution du CGI qui se télécharge au lieu d’être exécuté…

J’ai tenté la création d’un .htaccess dans le dossier qui contient le CGI soit /www/monsite/magento/cgi-bin/.htaccess et je lui ai collé ces lignes :

AddHandler cgi-script .cgi Options +ExecCGI

Mais c’est toujours pareil, quand je tape l’url du CGI dans un navigateur son téléchargement est proposé…

Ca y est, ça fonctionne enfin !

Donc au final j’ai supprimé toutes les instructions que j’avais placé dans : le vhost, le apache2.conf, le .htaccess /www/monsite/magento/cgi-bin/.htaccess.

Et j’ai juste ajouté

AddHandler cgi-script .cgi Options +ExecCGI
Dans le .htaccess à la racine du site : /www/monsite/magento/.htaccess

Et le CGI s’execute bien !

Merci à tous pour l’aide :wink:

Salut,
Résolu = Coche verte

Merci.