LINUX.ORG.RU
решено ФорумAdmin

Непонятки с Apache2 и cgi


0

1

Ubuntu server 12.04. Начал устанавливать ligtsquid и столкнулся с тем, что не работает cgi. Начал пробовать простенькие скрипты, типа

<?php
phpinfo();
?>
получаю сообщение: Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

В логах светится «Premature end of script headers: 1.cgi» Права на этот 1.cgi для запуска есть.

в /etc/apache2/mods-enabled cgi.load, perl.load php5.load и php4.conf есть

для cgi в /etc/apache2/sites-available/default прописано

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory «/usr/lib/cgi-bin»>
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch  +Includes
order allow,deny
allow from all
</Directory>

Похоже что-то еще надо сделать, что бы заработали скрипты, но уже что только не пробовал, нифига не выходит.

★★★

Откройте для себя тэг [code]

Зачем вам запускать php через cgi? Впрочем, если у вас этот скрипт не запустится из консоли, не будет работать и из апача. Тем более, что запускать его надо через php-cgi.

hizel ★★★★★
()
Ответ на: комментарий от hizel

этот скрипт для примера я привел. Вообще мне надо ligtsquid запустить, а он на перле. Но на перловые скрипты реагирует точно так же. К примеру этот скрипт в консоли запускается и выводит инфу, а в браузере получаю все ту же ошибку

#!/usr/bin/perl
print «Content-type: text/plain; charset=iso-8859-1\n\n»;
foreach $var (sort(keys(%ENV))) {
    $val = $ENV{$var};
    $val =~ s|\n|\\n|g;
    $val =~ s|«|\\»|g;
    print «${var}=\»${val}\«\n»;
}

deys ★★★
() автор топика

CGI - это всего-лишь интерфейс для запуска ваших исполняемых файлов, которые могут быть скриптами или бинарниками. Сам интерфейс определяет правила взаимодействия с этими программами не накладывая ограничений на внутреннее устройство программ, то есть используются стандартные методы передачи и приёма данных (STDIN, STDOUT и переменные окружения). Что всё это значит? А это значит, что для php (равно как и для других интерпретаторов) вам как минимум необходимо указать sha-bang в первой строке, ибо система ну совсем не понимает, чего от неё хотят и кому скармливать ваш скрипт. И учтите, CGI даёт волю управлять данными на уровне HTTP протокола, то есть, прежде, чем что-либо выплёвывать, вам необходимо вывести хотя бы:

Content-type: text/html \r\n\r\n

nickleiten ★★★
()

И посмотри в error.log - оно там явно должно написать, в чём проблема.

nickleiten ★★★
()
Ответ на: комментарий от nickleiten

да, права для запуска есть # ls -l -rwxr-xr-x 1 www-data www-data 289 сент. 19 16:09 printenv.cgi

На другом серваке на salackware эти скрипты нормально отрабатываются. А вот на этом новом на ubuntu что-то не могу заставить работать. Здесь даже конфиг в непривычном видел, по сравнению с тем, что приходилось до этого видеть. Вот и думаю, что по умолчанию запрещено cgi и как-то отдельно включать надо

deys ★★★
() автор топика
Ответ на: комментарий от hizel
drwxr-xr-x   3 www-data www-data    4096 сент. 23 13:57 .
drwxr-xr-x 174 root     root       36864 сент. 20 08:42 ..
-rwxr-xr-x   1 www-data www-data      20 сент. 19 17:15 1.cgi
-rwxr-xr-x   1 www-data www-data  657684 янв.   8  2012 awstats.pl
-rw-r--r--   1 www-data www-data     220 сент. 23 13:13 .htsccess
-rwxr-xr-x   1 www-data www-data      20 сент. 19 17:15 index.cgi
drwxr-xr-x   2 root     root        4096 сент. 23 12:56 lightsquid
lrwxrwxrwx   1 root     root          29 сент. 19 17:11 php -> /etc/alternatives/php-cgi-bin
-rwxr-xr-x   1 root     root     8108400 сент.  5 03:14 php5
-rwxr-xr-x   1 www-data www-data     289 сент. 19 16:09 printenv.cgi
-rwxr-xr-x   1 www-data www-data     797 сент. 19 15:18 test-cgi.cgi
-rwxr-xr-x   1 www-data www-data     112 сент. 19 16:07 user.cgi

файла .htaccess изначально не было. Это я уже, когда различные варианты пробовал, его добавил.

deys ★★★
() автор топика
Ответ на: комментарий от deys

У вас там бардак, судя по вашим сообщениям. Разбираться нереально.

Например:

файла .htaccess изначально не было

этого файла так и нет. И т.д. выше по тексту опечатки и неточности, а также валите все в кучу php, cgi еще и mod_perl сверху.

hizel ★★★★★
()
Ответ на: комментарий от hizel

удилил и апач и lightsquid. Установил заново. В настройках апача в /etc/apache2/mods-enabled/mime.conf раскомментировал AddHandler cgi-script .cgi, после этого и скрипты стали запускаться и ligtsquid заработал. Единственное, что теперь осталось не понятно. В файл /etc/apache2/conf.d/lightsquid добавляю свой айпишник, но вылазит доступ запрещен. если ставлю Allow from all, то тогда пускает к статистике. Но пускает со всех компов, а мне нужно дать разрешение только отдельным компам для просмотра. Если делаю, как было на старом сервере, через .htaccess, то здесь он не отрабатывает его вообще

--------
Alias   /lightsquid/    /usr/lib/cgi-bin/lightsquid/

<Location «/lightsquid/»>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0
        Allow from 10.128.130.14
# Before uncommenting the following lines please put IP address
# of your computer in the Allow line
        # Allow from REPLACE-WITH.YOUR-HOST.IP-ADDRESS
# IPv6 addresses work only with apache2
        Allow from ::1/128
</Location>
-------

deys ★★★
() автор топика
Ответ на: комментарий от deys

Нашел причину. Просто браузер настроен для работы через прокси-сервер. Соответственно я на апач попадаю не со своего IP, а с IP прокси. Я что-то на айпишку то в логах внимания сразу и не обратил. Вот только не нашел, как в хроме (ubuntu 12.04) добавить исключения, на какие адреса ходить мимо прокси. Нажимаю в хроме настройки, вылазиет системное меню настрое, в котором можно указать только адрес прокси, а исключений нет

deys ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.