Impossibile modificare il percorso cgi-bin in Apache


0

Ho installato Apache e la radice Web predefinita era / var / www. Volevo cambiare il cgi-bin in qualche posto all'interno di / var / www ma non posso. Funziona solo su / usr / lib / cgi-bin.

L'ho anche provato inserendo una directory webroot nella mia directory home con un cgi-bin e apportando le modifiche di conseguenza in conf. ma l'unico modo in cui funziona è quando le impostazioni di cgi-bin puntano a / usr / lib / cgi-bin.

VirtualHost:

<VirtualHost *:80>
   ServerAdmin webmaster@localhost

    #DocumentRoot /var/www
    DocumentRoot /home/aj/public_html

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    #<Directory /var/www/>
    <Directory /home/aj/public_html/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all  
            AddHandler mod_python .py
            PythonHandler mod_python.publisher
            PythonDebug On
    </Directory>

    ScriptAlias /cgi-bin/ /home/aj/public_html/cgi-bin/
    #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    #<Directory /usr/lib/cgi-bin/>
    <Directory /home/aj/public_html/cgi-bin/>
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

Il log di Apache presenta questo errore:

script not found or unable to stat: /home/aj/public_html/cgi-bin

Qualche informazione in più:

Dopo aver eseguito un comando "ps -AF | grep ap" ho ottenuto il risultato e penso che i processi Apache siano in esecuzione come root o www-data. Ecco la discarica:

root     22762     1  0  8543  8952   0 00:30 ?        00:00:00 /usr/sbin/apache2 -k start
www-data 22764 22762  0  8669  5928   0 00:30 ?        00:00:00 /usr/sbin/apache2 -k start
www-data 22765 22762  0  8543  5152   0 00:30 ?        00:00:00 /usr/sbin/apache2 -k start
www-data 22766 22762  0  8669  5928   0 00:30 ?        00:00:00 /usr/sbin/apache2 -k start

Per favore aiuto. Grazie.


2
Includi parti pertinenti dei tuoi file di configurazione.
pesante

Fatto così. Mi dispiace per quello.
sabertooth,

Non funziona significa 404 o il download di script invece di eseguirli?
naugtur,

404. File non trovato.
sabertooth,

Risposte:


1

Se l'account utente con cui è in esecuzione Apache (guest? Nessuno?) Non ha accesso, /home/aj/public/cgi-binallora vedresti quell'errore.

Esaminare le impostazioni Utente e Gruppo in httpd.conf, ed esaminare anche l'output di questo comando:

ls -ld /home/aj /home/aj/public_html /home/aj/public_html/cgi-bin

L'utente Apache sarebbe in grado di vedere la directory cgi-bin?

In che modo l'utilizzo, ad esempio, /var/www/cgi-binnon funziona?
C'è stato qualche messaggio di errore all'avvio o hai visto un errore nel browser durante l'invio di una richiesta a uno script?

Forse hai lo stesso problema con /var/wwwla tua home directory; vale a dire che il processo Apache non ha accesso a quella cartella.

Nota che si tratta di congetture fino a quando non sapremo quali account utente e quali autorizzazioni sono in vigore.


Ho modificato il post sopra per mostrarti i processi e gli utenti relativi a quelli. Non funziona significa che mi darà un errore 404, il file non è stato trovato.
sabertooth,

/ var / www funziona come in posso vedere il cgi python funzionante. / home / aj / public_html non funziona. Come cambio l'utente. Penso che anche se Apache funziona come root, dovrebbe esserci un problema per root per accedere a un utente.
sabertooth,

Inoltre, vedo che i file php e html funzionano. sono solo i file
pgi

Potrei eseguire Apache come il mio utente 'aj', ma ancora senza fortuna.
sabertooth,

0

Se cou è profficiend con strace, ti suggerisco di eseguire l'istanza non biforcuta di httpd tramite strace e vedere perché compaiono errori. Strace ti dirà se si tratta di un problema di autorizzazione o di un percorso sbagliato.


0

Fatto!

PythonHandler mod_python.publisher 

deve essere

PythonHandler mod_python.cgihandler

Quindi è possibile eseguire Python come CGI.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.