Não é possível alterar o caminho cgi-bin no Apache

0

O Apache instalado e a raiz da Web padrão era / var / www Eu queria mudar o cgi-bin para algum lugar dentro do / var / www, mas não posso. Funciona apenas em / usr / lib / cgi-bin.

Eu até tentei colocar um diretório webroot no meu diretório home com um cgi-bin nele e fiz as mudanças de acordo com o conf. mas a única maneira de funcionar é quando as configurações do cgi-bin apontam para / 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>

O log do Apache tem esse erro:

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

Mais algumas informações:

Depois de fazer um comando "ps -AF | grep" recebi o resultado de volta e acho que os processos do Apache estão rodando como root ou www-data. Aqui está o despejo:

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

Por favor ajude. Obrigado.

    
por sabertooth 11.08.2010 / 05:35

3 respostas

0

Entendi!

PythonHandler mod_python.publisher 

precisa ser

PythonHandler mod_python.cgihandler

Então você pode executar o Python como CGI.

    
por 12.08.2010 / 05:54
1

Se a conta de usuário na qual o Apache está sendo executado (guest? nobody?) não tiver acesso a /home/aj/public/cgi-bin , você verá esse erro.

Analise as configurações Usuário e Grupo no httpd.conf e examine também a saída deste comando:

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

O usuário do Apache seria capaz de ver o diretório cgi-bin?

De que maneira o uso de, e. /var/www/cgi-bin não funciona?
Houve alguma mensagem de erro na inicialização ou você viu um erro no navegador ao enviar uma solicitação para um script?

Possivelmente você tenha o mesmo problema com /var/www do seu diretório pessoal; ou seja, o processo do Apache não tem acesso a essa pasta.

Observe que tudo isso é conjectura até sabermos quais contas e permissões de usuário estão em vigor.

    
por 11.08.2010 / 14:12
0

Se cou é proficiente com strace, sugiro que você execute uma instância não bifurcada do httpd através do strace e veja porque os erros aparecem. Strace dirá se é problema de permissão ou caminho errado.

    
por 11.08.2010 / 15:33