Установленный Apache и веб-корень по умолчанию был /var /www. Я хотел изменить cgi-bin где-нибудь внутри /var /www, но не могу. Работает только в /usr /lib /cgi-bin.

Я даже попробовал сделать это, поместив каталог webroot в мой домашний каталог с cgi-bin и внес соответствующие изменения в conf. но единственный способ это работает, когда настройки cgi-bin указывают на /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>

В журнале Apache есть эта ошибка:

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

Еще немного информации:

После выполнения команды «ps -AF | grep ap» я получил результат обратно и думаю, что процессы Apache выполняются либо как root, либо как www-data. Вот свалка:

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

Пожалуйста помоги. Благодарю.

3 ответа3

1

Если учетная запись пользователя, под которой работает Apache (гость? никто?) не имеет доступа к /home/aj/public/cgi-bin тогда вы увидите эту ошибку.

Пожалуйста, проверьте настройки User и Group в httpd.conf , а также проверьте вывод этой команды:

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

Сможет ли пользователь Apache увидеть каталог cgi-bin?

Каким образом использование eg /var/www/cgi-bin не работает?
Было ли какое-либо сообщение об ошибке при запуске, или вы видели ошибку в браузере при отправке запроса в скрипт?

Возможно, у вас та же проблема с /var/www что и с вашим домашним каталогом; а именно, что процесс Apache не имеет доступа к этой папке.

Обратите внимание, что это все предположения, пока мы не узнаем, какие учетные записи пользователей и разрешения действуют.

0

Если вы имеете дело со strace, я предлагаю вам запустить не раздвоенный экземпляр httpd через strace и посмотреть, почему появляются ошибки. Strace сообщит вам, если это проблема с разрешением или неправильный путь.

0

Понял!

PythonHandler mod_python.publisher 

должно быть

PythonHandler mod_python.cgihandler

Затем вы можете запустить Python как CGI.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .