По умолчанию в предустановленном вебсервере "Apache 1.3.x" под "OpenBSD 4.9" выполнение Perl сценариев (CGI) запрещено. Для разрешения выполнения Perl сценариев нужно для начала скопировать каталог "/var/www/cgi-bin/" в "/var/www/htdocs/cgi-bin/". В каталоге "/var/www/htdocs/cgi-bin" по умолчанию содержатся файлы Perl сценариев без расширения и с нулевыми правами на выполнение (тобишь запрещено): bgplg, printenv, test-cgi
Теперь все по порядку... Сразу после установки владельцем каталога/файлов "/var/www/htdocs" является "root:daemon" и/или "root:bin" и имеет права 755/644. Первым делом сменим владельца (хоть это и не обязательно):
chown -R www:www /var/www/htdocs
Теперь добавим к файлам, что в каталоге "/var/www/htdocs/cgi-bin/", расширение ".pl" и установим на каталог "/var/www/htdocs/cgi-bin/" и на лежащие в нём файлы права 750 или 755 иначе будет ошибка "500 Internal Server Error", после чего отредактируем файл "vi /var/www/conf/httpd.conf" и поправим строки 610-629, 767 до такого состояния:
... LoadModule include_module modules/mod_include.so ... # 610-629 # # ScriptAlias: This controls which directories contain server scripts. # ScriptAliases are essentially the same as Aliases, except that # documents in the realname directory are treated as applications and # run by the server when requested rather than as documents sent to the client. # The same rules about trailing "/" apply to ScriptAlias directives as to # Alias. # ScriptAlias /cgi-bin/ "/var/www/htdocs/cgi-bin/" # # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory "/var/www/htdocs/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory> # строка 767 AddHandler cgi-script .pl .pm .cgi
ПРИМЕЧАНИЕ: Права 750, на каталог "/var/www/htdocs/cgi-bin" и файлы в нём, будут более безопасными нежели 755!
Если при выполнении Perl сценариев (CGI) возникает ошибка HTTP 500 (Internal Server Error) тогда измените "Options +ExecCGI" на "Options ExecCGI".
Настройка включения на стороне сервера (SSI - Server Side Includes)
Несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Реализован в веб-сервере Apache при помощи модуля mod_include. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением .shtml, .stm или .shtm
По умолчанию в предустановленном веб сервере "Apache 1.3.x" под "OpenBSD 4.9" выполнение включения на стороне сервера (SSI - Server Side Includes) отключено и для его включения следует отредактировать в файле "vi /var/www/conf/httpd.conf" строки 769-773 до такого состояния:
# # To use server-parsed HTML files # AddType text/html .shtml .shtm .stm AddHandler server-parsed .shtml .shtm .stm <Directory "/var/www/htdocs"> Options Indexes FollowSymLinks +Includes AllowOverride None Order allow,deny Allow from all </Directory>
Для каждого хоста которому нужно разрешить выполнение включения на стороне сервера (SSI - Server Side Includes) следует указывать "Options +Includes". Более подробная информация о SSI на оффициальной странице справки.
Основные команды SSI (Server Side Includes):
- config — устанавливает формат сообщений об ошибках, дат и размера
- set — устанавливает значение переменной
- printenv — выводит список переменных окружения
- echo — вставляет значение переменной
- flastmod — вставляет дату и время изменения файла
- fsize — вставляет размер файла
- include — вставляет содержимое другого файла
- if, elif, else, endif — условные операторы
Настройка выполнения PHP сценариев
По умолчанию в предустановленном веб сервере "Apache 1.3.x" под "OpenBSD 4.9" PHP сценарии выполняются только файлах с расширением ".php" но, нам для полноценного хоста этого не достаточно и мы расширим спектр расширений файлов в которых будут обрабатыватся PHP сценарии. Для этого нам достаточно подправить строку 757 до такого состояния:
RemoveHandler .html AddType application/x-httpd-php .html .htm .xhtml .xht .xml .php .phtml .php3 .php4 .php5 .phps
Мы убрали расширение ".html" из обработки его сервером "Apache 1.3.x" и добавили его в обработчик РНР, теперь в HTML/XHTML файлах с расширением .html, .htm, .xhtml, .xht и .xml будут обрабатываться РНР сценарии.
Совместное использование PHP и SSI
Для совместного использования сценариев PHP и SSI (SSI - Server Side Includes), в PHP сенариях следует использовать функцию "virtual()
" следующим образом:
<?php virtual("ssi.shtml");
или:
<script language="php"> virtual("ssi.shtml"); </script>
Первый способ, , наиболее предпочтительный, потому как он допускает использование PHP в коде, который соответствует правилам XHTML/XML
Функция
virtual()
предназначена для работы в среде сервера Apache и является эквивалентом конструкции<!--#include virtual...-->
, используемой вmod_include
. Эта функция выполняет подзапрос Apache. Она бывает полезной в тех случаях, когда вам нужно включить в свой скрипт результат выполнения других CGI программ или скриптов или обработки сервером Apache .shtml файлов. Имейте в виду, что CGI скрипты должны создавать корректные CGI заголовки. Как минимум, CGI скрипт должен создавать заголовок Content-type. Если вы хотите включить в скрипт PHP файлы, используйте функциюinclude()
или функциюrequire();
функцияvirtual()
не должна использоваться для включения файлов, которые сами по себе являются PHP скриптами.
Для включения сторонних файлов, а также PHP сценариев в файлы (.shtml .shtm .stm) в которых выполняется SSI (SSI - Server Side Includes) следует использовать директиву:
<!--#include virtual="script.php"--> <!--#include virtual="content.xhtml"--> <!--#include virtual="content.txt"-->
Обработка XHTML
Для обработки XHTML (Extensible Hypertext Markup Language — расширяемый язык разметки гипертекста) файлов с расширением .xhtml, .xht, .xml нам не требуется совершать дополнительные манипуляции ибо веб сервер "Apache 1.3.x" в "OpenBSD 4.9" и так в курсе о этом типе файлов и обрабатывает их без каких либо проблем.
По стандартам W3C, XHTML документы должны выдаваться с MIME-типом application/xhtml+xml. "Apache 1.3.x" в "OpenBSD 4.9" знает об этом и отдаёт файлы имеющие расширение .xhtml, .xht, .xml с MIME-типом application/xhtml+xml но, некоторые версии IE не могут правильно обрабатывать файлы с MIME-типом application/xhtml+xml и вместо открытия предлагает сохранить их на диск. Для таких случаев, чтобы для IE файлы имеющие расширение .xhtml, .xht, .xml выдавались с MIME-типом text/html, а для всех остальных с MIME-типом application/xhtml+xml есть такой изврат с использованием mod_rewrite
:
RewriteEngine on RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml [OR] RewriteCond %{HTTP_ACCEPT} "application/xhtml\+xml *; *q=0" RewriteRule \.xhtml$ - [T=text/html]
Потому как по умолчанию для .xhtml-файлов MIME-тип application/xhtml+xml, мы проверяем есть ли в заголовке Accept такой тип и, если нет, заменяем тип на text/html.
Ссылки по теме: