Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Самоучитель PHP 4 - Котеров Д. В.

.pdf
Скачиваний:
99
Добавлен:
24.05.2014
Размер:
4 Мб
Скачать
☆

528

 

Часть VI. Приложения

AddLanguage kr .kr

 

 

AddCharset ISO-2022-KR .iso-kr

 

AddLanguage no .no

 

 

AddLanguage pl .po

 

 

AddCharset ISO-8859-2 .iso-pl

 

AddLanguage pt .pt

 

 

AddLanguage pt-br .pt-br

 

AddLanguage ltz .lu

 

 

AddLanguage ca .ca

 

 

AddLanguage es .es

 

 

AddLanguage sv .se

 

 

AddLanguage cz .cz

 

 

AddLanguage ru .ru

 

 

AddLanguage tw .tw

 

 

AddCharset Big5

.Big5

.big5

AddCharset WINDOWS-1251

.cp-1251

 

AddCharset CP866

.cp866

 

AddCharset ISO-8859-5

.iso-ru

 

AddCharset KOI8-R

.koi8-r

 

AddCharset UCS-2

.ucs2

 

AddCharset UCS-4

.ucs4

 

AddCharset UTF-8

.utf8

 

#LanguagePriority позволяет определить первоочередность некоторых

#языков при установлении протокола обмена.

#

#Возможно, вы захотите изменить предложенный порядок языков. Просто

#перечислите их в порядке убывания приоритета.

#

<IfModule mod_negotiation.c>

LanguagePriority en da nl fr de el it ja no pl pt ru ca es sv tw </IfModule>

#

#AddType позволяет слегка подправить mime.types, не редактируя его,

#или объявить конкретные файлы имеющими определенный тип.

#

#Например, модуль PHP3 (этот модуль не является частью дистрибутива

#сервера Apache), обычно использует следующие объявления:

Приложение 1. Файл конфигурации Apache httpd.conf

529

#

#AddType application/x-httpd-php3 .php3

# AddType application/x-httpd-php3-source .phps

#

#В случае PHP 4.x укажите:

AddType application/x-httpd-php .php

#AddType application/x-httpd-php-source .phps

#Следующие строки не относятся к заданию типов документов,

#но их удобно поместить сюда для подключения PHP:

#

ScriptAlias /_php/ "C:/Program Files/PHP4/" Action application/x-httpd-php "/_php/php.exe"

AddType application/x-tar .tgz

#

#AddHandler позволяет отобразить определенные расширения имен файлов

#на обработчиков вне связи с определениями типов файлов. Обработчики

#могут быть как встроены в сервер, так и объявлены директивой

#Action (см. ниже).

#

#Если вы хотите использовать файлы, вставляемые сервером в ваши

#документы (SSI — server side includes), снимите комментарий

#со следующих строк:

#

# для использования сценариев CGI —

#

AddHandler cgi-script .bat .exe .cgi

#

#для HTML-файлов, предварительно обрабатываемых

#сервером (server-parsed HTML files):

#

AddType text/html .shtml

AddHandler server-parsed .shtml .html .htm

#

530

Часть VI. Приложения

#Раскомментируйте следующую строку, чтобы разрешить Apache передачу

#специальных файлов, которые не сопровождаются стандартными

#заголовками HTTP (send-asis HTTP file).

#

# AddHandler send-as-is asis

#

#Если вы хотите использовать карты-изображения, обрабатываемые

#сервером, раскройте следующую директиву:

#

# AddHandler imap-file map

#

#Если вы хотите задействовать карты типов (type maps, см.

#документацию), используйте:

#

# AddHandler type-map var

</IfModule>

# Конец блока директив описания типов документов.

#

#Директива Action позволяет определить приложение, выполняющее сценарии,

#когда запрашиваются содержащие их файлы. Это устраняет необходимость

#многократного упоминания URL часто используемых процессоров

#CGI-сценариев.

#Формат: Action псевдоним_типа /псевдоним_пути/обработчик

#Action среда/тип /псевдоним_пути/обработчик

#

#

#MetaDir: определяет имя каталога, в котором Apache может найти файлы с

#метаинформацией. Эти файлы содержат дополнительные заголовки HTTP,

#включаемые при отправке определенных документов.

#

# MetaDir .web

#

# MetaSuffix устанавливает суффикс имени файла, содержащего метаинформацию.

Приложение 1. Файл конфигурации Apache httpd.conf

531

#

#MetaSuffix .meta

#Настраиваемая реакция на ошибки (собственный стиль Apache) может быть

#трех типов.

#

#1) простой текст

#ErrorDocument 500 "Сервер сказал а-я-яй!"

#Внимание: знак двойной кавычки просто означает, что далее следует

#текст.

#

#2) локальная переадресация

#Чтобы перенаправить на локальный документ:

#ErrorDocument 404 /missing.html

#Перенаправлять можно и на сценарий, и на документ, использующий

#включения на стороне сервера:

#ErrorDocument 404 /cgi-bin/missing_handler.pl

#

#3) внешняя переадресация

#ErrorDocument 402 http://some.other_server.com/info.html

#Большинство переменных окружения, связанных с исходным запросом,

#станут недоступны при такой переадресации.

#

# Установки, связанные с браузером пользователя.

#

<IfModule mod_setenvif.c>

#

#Следующие директивы отменяют поддержку долговременных соединений

#(keepalives) и "смывание" заголовков HTTP. Первая директива

#отменяет их для Netscape 2.x и браузеров, которые "притворяются",

#что они — Netscape (известны некоторые проблемы с такими

#браузерами). Вторая директива предназначена для Microsoft Internet

#Explorer 4.0b2, реализация HTTP/1.1 которого не полна и не

#поддерживает должным образом keepalive, когда он используется в

#откликах 301 или 302 (переадресация).

#

BrowserMatch "Mozilla/2" nokeepalive

532

Часть VI. Приложения

BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

#

#Следующая директива отключает отклики по HTTP/1.1 браузерам,

#которые нарушают стандарты HTTP/1.0 и не могут разобрать

#основной отклик 1.1.

#

BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0

</IfModule>

# Конец настроек, связанных с браузерами.

#

#Следующая группа директив управляет отчетами о состоянии сервера,

#имеющего URL http://servername/server-status. Для приведения в

#соответствие с вашими нуждами измените .your_domain.com.

#

#<Location /server-status>

#SetHandler server-status

#Order deny,allow

#Deny from all

#Allow from .your_domain.com

#</Location>

#

#Эта группа директив управляет отчетами конфигурации удаленного

#сервера http://servername/server-info (требуется, чтобы был загружен

#mod_info.c). Замените .your_domain.com на имя вашего домена.

#

#<Location /server-info>

#SetHandler server-info

#Order deny,allow

#Deny from all

#Allow from .your_domain.com

#</Location>

#

Приложение 1. Файл конфигурации Apache httpd.conf

533

#Поступали сообщения, что некие люди пытаются злоупотреблять древней

#ошибкой старых версий Apache. Ошибка касалась CGI-сценария,

#поставлявшегося с Apache.

#Раскрыв следующие строки, вы можете переадресовать эти атаки

#на регистрирующий сценарий на phf.apache.org. А можете регистрировать

#их сами, используя сценарий support/phf_abuse_log.cgi.

#

#<Location /cgi-bin/phf*>

#Deny from all

#ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi

#</Location>

#

#Директивы proxy-сервера.

#<IfModule mod_proxy.c>

#Раскройте следующую строку для того, чтобы разрешить

#работу с proxy.

#ProxyRequests On

#<Directory proxy:*>

#Order deny,allow

#Deny from all

#Allow from .your_domain.com

#</Directory>

#

#Разрешить/запретить обработку заголовков HTTP/1.1 Via:.

#Возможные значения: Off | On | Full | Block. Full добавляет в

#заголовок версию сервера, Block удаляет все исходящие

#заголовки Via:.

#

# ProxyVia On

#

#Для разрешения также кэширования отредактируйте и раскройте

#следующие строки (нельзя включать кэширование без указания

#CacheRoot):

#

534

Часть VI. Приложения

#CacheRoot "C:/Program Files/Apache Group/Apache/proxy"

#CacheSize 5

#CacheGcInterval 4

#CacheMaxExpire 24

#CacheLastModifiedFactor 0.1

#CacheDefaultExpire 1

#NoCache a_domain.com another_domain.edu joes.garage_sale.com

#</IfModule>

#Конец настроек proxy-сервера.

### Раздел 3: Виртуальные хосты

#

#Директива VirtualHost: Если вы хотите держать на своей машине несколько

#хостов, следует для каждого из них завести контейнер VirtualHost.

#Прежде чем их устанавливать, обращайтесь за подробными разъяснениями к

#документации по адресу http://www.apache.org/docs/vhosts/. Для проверки

#конфигурации ваших виртуальных хостов вы можете задавать опцию -S

#командной строки.

#

#Если вы хотите использовать именные виртуальные хосты (name-based

#virtual hosts), вам необходимо определить для них как минимум один

#адрес IP (и номер порта).

#

NameVirtualHost 127.0.0.1:80

#

#Пример использования директивы VirtualHost:

#В контейнер VirtualHost может включаться почти любая

#директива Apache.

#<VirtualHost ip.address.of.host.some_domain.com>

#ServerAdmin webmaster@host.some_domain.com

#DocumentRoot /www/docs/host.some_domain.com

#ServerName host.some_domain.com

#ErrorLog logs/host.some_domain.com-error_log

#CustomLog logs/host.some_domain.com-access_log common

#</VirtualHost>

#<VirtualHost _default_:*>

Приложение 1. Файл конфигурации Apache httpd.conf

535

#</VirtualHost>

#Далее идут настройки для виртуальных хостов, описанных во второй

#части этой книги.

#----localhost <VirtualHost localhost>

ServerAdmin webmaster@localhost.ru ServerName localhost

DocumentRoot "z:/home/localhost/www" ScriptAlias /cgi/ "z:/home/localhost/cgi/" ErrorLog z:/home/localhost/error.log CustomLog z:/home/localhost/access.log common

</VirtualHost>

#----hacker <VirtualHost hacker>

ServerAdmin webmaster@hacker.ru ServerName hacker

DocumentRoot "z:/home/hacker/www" ScriptAlias /cgi/ "z:/home/hacker/cgi/" ErrorLog z:/home/hacker/error.log CustomLog z:/home/hacker/access.log common

</VirtualHost>

#----cracker <VirtualHost cracker>

ServerAdmin webmaster@cracker.ru ServerName cracker

DocumentRoot "z:/home/cracker/www" ScriptAlias /cgi/ "z:/home/cracker/cgi/" ErrorLog z:/home/cracker/error.log CustomLog z:/home/cracker/access.log common

</VirtualHost>

# Конец главного файла конфигурации Apache.

Приложение 2

Файл конфигурации

PHP php.ini

Приложение 2, которое вы видите перед собой, уважаемый читатель, включает полный перевод на русский язык комментариев внутри файла конфигурации PHP php.ini.

Директивы в листинге П2.1 полностью соответствуют рекомендациям по уста- новке PHP для Windows, представленным в части II книги. Впрочем, чтобы получить этот файл, мне понадобилось всего пара изменений в настройках PHP по умолчанию (настройки по умолчанию хранятся в файле php.inidist) — не то, что в случае с Apache.

Если вы установили PHP как модуль Apache, перед вами открываются дополнительные возможности: вы можете задавать значения некоторых директив прямо в файлах httpd.conf или .htaccess. В силу специфики синтаксиса файлов конфигурации Apache, для отделения имени директивы и ее значения нужно использовать пробел, а не знак =. Кроме того, имена директив PHP должны быть предварены префиксом php_. Например, директива из php.ini

auto_prepend_file=top.html

будет выглядеть в httpd.conf или .htaccess так:

php_auto_prepend_file top.html

Приведенного листинга с комментариями должно быть вполне достаточно для понимания роли большинства директив PHP. Именно поэтому я уделил им так мало страниц в частях IV и V данной книги. И все-таки, если у вас возникнут какие-то затруднения, их легко сможет разрешить документация, которую можно получить, например, с официального сайта PHP: http://www.php.net.

Листинг П2.1. Файл php.ini

[PHP]

;;;;;;;;;;;;;;;;;

; Об этом файле ;

Приложение 2. Файл конфигурации PHP php.ini

537

;;;;;;;;;;;;;;;;;

;Этот файл содержит большинство установок PHP. Чтобы PHP смог его

;обнаружить, он должен называться 'php.ini'. Интерпретатор ищет файл в

;текущем каталоге, в случае неудачи — в каталоге, указанном в

;переменной окружения PHPRC, и, наконец, в каталоге, заданном при

;компиляции и сборке PHP (именно в таком порядке).

;В системе Windows путь, указанный при компиляции PHP,

;соответствует каталогу Windows (в большинстве случаев это

;c:\windows). Папка, в которой будет производиться поиск файла

;'php.ini', может быть также определена с использованием ключа –c

;командной строки.

;

;Синтаксис файла крайне прост. Пробельные символы (то есть, пробелы,

;символы табуляции и т. д.), строки, начинающиеся с точки с запятой (;)

;игнорируются (как вы, наверное, уже догадались). Заголовки секций

;(например, [Foo]) также пропускаются, но, возможно, будут учитываться

;в будущих версиях PHP.

;

;Директивы задаются примерно так:

;directive=value

;Имена директив чувствительны к регистру символов — foo=bar не то же

;самое, что FOO=bar.

;

;Значение value может быть строкой, числом, константой PHP (например,

;E_ALL или M_PI), одной из INI-констант (On, Off, True, False, Yes, No

;или None), выражением (например, E_ALL & ~E_NOTICE), а также строкой

;в кавычках ("foo").

;

;В выражениях могут использоваться только побитовые и логические

;операторы, а также скобки:

;| поразрядное ИЛИ (OR)

;& поразрядное И (AND)

;~ поразрядное НЕ (NOT)

;! логическое отрицание (NOT)

;

;В качестве логических флагов со значением "истина" могут быть

;использованы значения 1, On, True или Yes. Значение "ложь" дают 0, Off,

;False и No.