Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Помогите новичку: Cgi-скрипты на Apache (http://forum.oszone.net/showthread.php?t=60245)

ASE DAG 29-01-2006 05:21 398445

Помогите новичку: Cgi-скрипты на Apache
 
Подскажите, пожалуйста, что необходимо для работы 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/ мы увидем содержимое папки 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 398471

Вот посмотрите на этот кусок конфига
Цитата:

# Папка длс 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 398895

Скрипт выдает заголовки?

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

ASE DAG 31-01-2006 00:54 399178

vadimiron
Разумеется в cgi-bin кладу (точнее в одну из ее подпапок, так ведь можно?).
Цитата:

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

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

vadimiron 31-01-2006 01:44 399188

ASE DAG
добавьте в нужную папку файл .htaccess со строчкой Options +ExecCGI

benya 31-01-2006 11:13 399297

Вобщем так - тема уже избитая на всех форумах.
Если это 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 400033

vadimiron
Извиняюсь, нужная папка это cgi-bin?, если да, то не помогло.
benya
Цитата:

#!/usr/bin/perl #подставить свой путь если другой
Спасибо! Подставил - стало работать (вроде-бы).
Но без этого никак нельзя? Иначе надо менять адрес в нес-ких десятках файлах, потом переносить их на другой компьютер, снова менять...

benya 02-02-2006 18:01 400085

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

vadimiron 02-02-2006 20:02 400124

Если в конфиге апача прописать
PHP код:

ScriptInterpreterSource registry 

то не надо точный адрес указывать
Просто достаточно #!/usr/bin/perl, и если там не нашёлся перл, то апач будет искать в регистре правильный путь

ASE DAG 04-02-2006 13:29 400718

benya
Не переставлять же их вручную. Я так и делаю, но это все-равно менять надо.

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


Время: 10:07.

Время: 10:07.
© OSzone.net 2001-