Se date un'occhiata al principale file di configurazione di Apache2, /etc/apache2/httpd.conf
vedrai che ci sono due cose da fare per consentire a / Library / WebServer / CGI-Executables di contenere i file cgi.
Innanzitutto, poiché non è coperto dalle autorizzazioni per la directory del documento adiacente, sarà necessario un blocco "Directory" per definire le autorizzazioni per tutti i file e le directory sottostanti. Nel caso di questa directory non consente assolutamente nulla. Questo è il motivo per cui quando hai puntato il tuo browser nella directory ha detto che le autorizzazioni sono state negate. Non preoccuparti, la seconda cosa consente i file cgi nel la directory da eseguire.
In secondo luogo, ha bisogno di un comando "ScriptAlias" che indica al server quale URL verrà utilizzato per puntarlo in modo che il server trovi i file e consenta loro di essere eseguiti.
ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) \
"/Library/WebServer/CGI-Executables/$1"
Questo in pratica dice "dopo aver rimosso il nome host, qualsiasi URL che inizia" / cgi-bin / "e continua con una parte di testo seguita da un punto seguito da un'altra parte di testo punta a un file con un nome corrispondente all'ultimo bit in la directory "" / Libreria / WebServer / CGI-Executables / $ 1 "
Se si desidera posizionare i file CGI in una delle directory utente, sarà necessario apportare alcune modifiche a un altro file di configurazione. Troverete il file di configurazione per le condivisioni utente in / etc / apache2 / users con un file di configurazione per ciascun utente. Ecco un esempio:
<Directory "/Users/jessica/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
A questo dovrai aggiungere "ExecCGI" alla riga "Opzioni" in modo da poter avere file CGI ovunque nella directory di Sites o sotto o aggiungere un nuovo blocco Directory per la tua cartella CGI. Sarebbe come questo: -
<Directory "/Users/jessica/Sites/CGI">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Poiché questo è sotto il nostro DocumentRoot non abbiamo bisogno di usare ScriptAliasMatch.
(La seconda opzione è la più sicura.)
_www
e modificare le autorizzazioni su 700. (Quindi anche l'intero albero dei documenti dovrebbe essere posseduto lo stesso ed avere i permessi di 600.)