Самоучитель по PHP 4
.pdfПриложение 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.
538 |
Часть VI. Приложения |
;
;Пустая строка может быть задана, если "не указать ничего" после знака
;равенства, или же указать слово None:
; |
foo= |
; |
устанавливаем foo равным пустой сторке |
; |
foo=none |
; |
аналогично |
;foo="none" ; устанавливаем foo равным строке 'none'
;Если вы используете константы в качестве части значения директивы и эти
;константы определяются в каком-нибудь динамически загружаемом
;расширении (модуле PHP или Zend), вы можете указывать их только после
;строки, которая загружает расширение.
;
;Все значения в файле php.ini-dist соответствуют встроенным значениям
;по умолчанию. Если php.ini не задействуется, или же вы удалите из него
;некоторые строки, будут установлены значения по умолчанию.
;;;;;;;;;;;;;;;;;;;
;Настройки языка ;
;;;;;;;;;;;;;;;;;;;
;Разрешает работу PHP для сервера Apache. engine=On
;Разрешает использовать короткие тэги <?. Иначе будут распознаваться
;только тэги <?php и <script>.
short_open_tag=On
;Позволяет использовать тэги <% %> а-ля ASP. asp_tags=Off
;Число значащих цифр после запятой, которые отображаются для чисел с
;плавающей точкой.
precision=14
;Признак коррекции дат (проблема 2000 года, которая может
;вызвать непонимание со стороны браузеров, которые
;на это не рассчитывают)
y2k_compliance=Off
; Использование буферизации вывода. Позволяет посылать заголовки (включая
Приложение 2. Файл конфигурации PHP php.ini |
539 |
;Cookies) после вывода текста. Правда, это происходит ценой
;незначительного замедления вывода.
;Вы можете разрешить буферизацию во время выполнения сценария путем
;вызова функций буферизации, или же включить ее по умолчанию с помощью
;следующей директивы:
output_buffering=Off
;Директива неявной отсылки говорит PHP о том, что выводимые данные нужно
;автоматически передавать браузеру после вывода каждого блока данных.
;Ее действие эквивалентно вызовам функции flush() после
;каждого использования print() или echo() и после каждого HTML-блока.
;Включение этой директивы серьезно замедляет работу, поэтому ее
;рекомендуется применять лишь в отладочных целях.
implicit_flush=Off
;Параметр определяет, должен ли PHP использовать возможность всегда
;передавать аргументы функциям по ссылке при выполнении сценария.
;Этот метод устарел, и, скорее всего, он не будет
;поддерживаться в будущих версиях PHP/Zend.
;Описание того, каким способом должен быть передан аргумент —
;по ссылке или по значению — рекомендуется указывать при объявлении
;функции. Лучше всего, если вы попробуете установить параметр в Off
;и проверите, все ли сценарии по-прежнему работают. Если это так,
;то все в порядке, и сценарии будут совместимы и с будущими версиями
;PHP. В противном случае вы будете получать предупреждения каждый раз,
;когда аргументы передаются ненадлежащим образом и по значению там,
;где должны передаваться по ссылке.
allow_call_time_pass_reference=On
;Безопасный режим safe_mode=Off safe_mode_exec_dir=
;Установка некоторых переменных окружения может потенциально породить
;"дыры" в защите сценариев. Следующая директива содержит разделенный
;запятыми список префиксов. В режиме включенного безопасного режима
;пользователь сможет изменять только те переменные окружения, имена
;которых начинаются с перечисленных префиксов.
;По умолчанию пользователь имеет возможность устанавливать только
540 |
Часть VI. Приложения |
;переменные окружения, начинающиеся с PHP_ (например,
;PHP_FOO=something).
;Замечание: если эта директива пуста, PHP позволяет пользователям
;модифицировать любые переменные окружения!
safe_mode_allowed_env_vars=PHP_
;Следующая директива содержит разделенный запятыми список имен
;переменных окружения, которые конечный пользователь не сможет изменять
;путем вызова putenv().
;Эти переменные будут защищены даже в том случае, если директива
;разрешает их использовать.
safe_mode_protected_env_vars=LD_LIBRARY_PATH
;Эта директива позволяет вам запрещать вызовы некоторых функций
;из соображений безопасности. Список задается в виде имен функций,
;разграниченных запятыми. Директива действует независимо от того,
;установлен ли безопасный режим или нет!
disable_functions=
;Цвета для режима раскраски синтаксиса. Любой цвет, допустимый в тэге
;<font color=???>, допустим и здесь.
highlight.string=#DD0000
highlight.comment=#FF8000
highlight.keyword=#007700
highlight.bg=#FFFFFF
highlight.default=#0000BB
highlight.html=#000000
;Другие директивы
;Следующая директива указывает, должен ли PHP добавлять заголовок
;X-Powered-by в заголовки, посылаемые браузеру, и, таким образом,
;обнаруживать себя. Это никак не может повлиять на безопасность
;сценария, однако позволяет пользователю определить, использовался
;ли PHP для генерации страницы, или нет.
expose_php=On
;;;;;;;;;;;;;;;;;;;;;;;;