Войти

Показать полную графическую версию : Помогите новичку: Cgi-скрипты на Apache


ASE DAG
29-01-2006, 05:21
Подскажите, пожалуйста, что необходимо для работы Cgi скриптов на Localhost'е.
Уже имеется Apache 2.0; Active Perl 5.8.
Но при вызове любой cgi или pl страницы выдается следующее:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, localhost@127.0.0.1 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.

Apache/2.0.43 Server at localhost Port 80

В "server log" написано что файл не найден, хотя все на месте и адреса прописаны правильно.
А после каких-то манипуляций с конфигурационным файлом Apache он выдал, что у меня нет прав на доступ к файлу.
Помогите пожалуйста разобраться.
С благодарностью.
DAG.
P.S. Конфигурационный файл брал из обучающей статьи, на всякий случай привожу его здесь:
# Устанавливаем SSI, для файлов с расширением shtm и shtml
AddType text/html .shtm .shtml
AddOutputFilter INCLUDES .shtm .shtml

# Даём знать веб серверу, что у нас есть PHP интерпретатор
ScriptAlias /php4/ "D:/server/php4/"
Action application/x-httpd-php4 "/php4/php.exe"

# Устанавливаем расширения для PHP скриптов
AddType application/x-httpd-php4 .htm .html .php .php3 .php4 .phtm .phtml
# Папка куда установлен наш веб сервер
ServerRoot "D:/server/Apache2"

PidFile logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
HostnameLookups Off

# Порт, который слушает наш веб сервер
Listen 80

# Модули
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so

# E-mail адрес админа веб сервера (поменяйте на свой)
ServerAdmin localhost@127.0.0.1

# Наш сервер:порт
ServerName localhost:80

UseCanonicalName Off

# Папка, где будут храниться наши html, php и другие файлы
DocumentRoot "D:/server/asesite/local publish"

# Индексные файлы, через пробел
DirectoryIndex index.htm index.html index.shtm index.shtml index.php index.php3 index.php4

# Имя встроенного конфигурационного файла
AccessFileName .htaccess

# Закрываем доступ к файлам конфигурации (.htaccess) и паролей (.htpasswd)
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

# База с типами файлов
TypesConfig conf/mime.types

# Тип всех документов - текстовый
DefaultType text/plain

<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>

# Файл отчёта с ошибками
ErrorLog logs/error.log

# Что записывать в файл отчёта, может принимать следующие значения:
# debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn

# Шаблон записи строки в файл отчёта
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# Файл отчёта со списком всех доступов к веб серверу
CustomLog logs/access.log common

ServerTokens Full

# Подпись веб сервера (On - включена, Off - отключена, EMail - показывать e-mail админа сервера)
ServerSignature On

# Виртуальные папки
# Например:
# Alias /icons/ "d:/server/Apache2/icons/"
# Зайдя на http://localhost/icons/ (http://localhost/icons/) мы увидем содержимое папки d:/server/Apache2/icons/
Alias /icons/ "D:/server/Apache2/icons/"

# Папка длс CGI, для PERL скриптов
ScriptAlias /cgi-bin/ "D:/server/asesite/local publish/cgi-bin/"
<Directory "D:/server/asesite/local publish/cgi-bin/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

# Выбираем иконки для различных форматов
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

# Иконка для неизвестных форматов
DefaultIcon /icons/unknown.gif

# Если выводится содержимое какой-либо папки, cчитываются файлы описания:
ReadmeName README.html
HeaderName HEADER.html

# Файлы для игнорирования, при выводе листинга директории
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

# Наша кодировка
AddDefaultCharset WINDOWS-1251

# CGI, PERL скрипты
AddHandler cgi-script .cgi .pl

vadimiron
29-01-2006, 12:07
Вот посмотрите на этот кусок конфига

# Папка длс CGI, для PERL скриптов
ScriptAlias /cgi-bin/ "D:/server/asesite/local publish/cgi-bin/"
<Directory "D:/server/asesite/local publish/cgi-bin/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>


Здесь указывается папка, в которой должны лежать все cgi скрипты
Вы кладёте именно в эту папку??

Вне этой папки cgi скрипты не будут обрабатываться

Можно сделать также, чтобы cgi скрипты в любой папке обрабатывались

benya
30-01-2006, 12:29
Скрипт выдает заголовки?

print "Content-type: text/html\n\n";

ASE DAG
31-01-2006, 00:54
vadimiron
Разумеется в cgi-bin кладу (точнее в одну из ее подпапок, так ведь можно?).
Можно сделать также, чтобы cgi скрипты в любой папке обрабатывались
Любопытно. И как?

benya
Если я правильно понял вопрос, то нет. Он вообще не видит ничего из папки cgi-bin.
Пробовал задать ее как виртуальную папку (ч\з Alias /cgi-bin/ "D:/server/asesite/local publish/cgi-bin/") - тогда говорит, что нет прав.

vadimiron
31-01-2006, 01:44
ASE DAG
добавьте в нужную папку файл .htaccess со строчкой Options +ExecCGI

benya
31-01-2006, 11:13
Вобщем так - тема уже избитая на всех форумах.
Если это windows:
Устанавливаем Apache
Устанавливаем Active Perl
Закидываем скрипт в папку, вернее лучше что-то типа:

#!/usr/bin/perl #подставить свой путь если другой
print "Content-type: text/html\n\n";
print "Hello World!";

Запускаем в браузере - радуемся. Сохраняем на всяк случай резервный конфиг и только потом лазим и создаем виртуальные хосты или разрешаем .htaccess (по умолчанию на сколько помню запрещена).
Если UNIX:
Выбираем нужные пакеты и копируем скрипт - запускаем, радуемся ;) Ничего сложного.

ASE DAG
02-02-2006, 16:17
vadimiron
Извиняюсь, нужная папка это cgi-bin?, если да, то не помогло.
benya
#!/usr/bin/perl #подставить свой путь если другой
Спасибо! Подставил - стало работать (вроде-бы).
Но без этого никак нельзя? Иначе надо менять адрес в нес-ких десятках файлах, потом переносить их на другой компьютер, снова менять...

benya
02-02-2006, 18:01
Если Вы работаете на Windows ставьте сразу Perl в папку близкую по путям Unix тоесть как правило (стандартно) c:\usr\
Тогда и переставлять ничего не придется. Все будет соответствовать #!/usr/bin/perl
А если много переставлять - загоняем все скрипты в текстовый редактор -> Поиск/Замена -> заменить во всех документах. И не мучаться.

vadimiron
02-02-2006, 20:02
Если в конфиге апача прописать
ScriptInterpreterSource registry
то не надо точный адрес указывать
Просто достаточно #!/usr/bin/perl, и если там не нашёлся перл, то апач будет искать в регистре правильный путь

ASE DAG
04-02-2006, 13:29
benya
Не переставлять же их вручную. Я так и делаю, но это все-равно менять надо.

vadimiron
Большое спасибо!




© OSzone.net 2001-2012